1
我有一个接口和一个类,实现接口的方法,但不使用implements
关键字来这样做。因此,我使用as
- 对班级实例进行压制。这一直按照预期工作,但它并不代表toString()
,而是在代理上调用,而不是实际的实例。使Groovy代理(从as-coercion)委托toString()
请看下面的例子:
class CoercionToString {
public static main(String[] args) {
A a = new A();
a.foo();
println a;
B b = new A() as B;
b.foo();
println b;
}
}
class A {
void foo() {
println "foo"
}
@Override
public String toString() {
return "bar";
}
}
interface B {
void foo()
}
这将产生以下的输出:
foo
bar
foo
[email protected]
我希望能够覆盖toString()
却是 - 不像其他方法 - 而不是委托给实际目的。有没有办法让代理对象的行为呢?
使用的接口需要,因为它是一个混合Java和Groovy项目。我现在在需要'toString()'支持的少数情况下明确使用'implements'关键字。 –