【发布时间】:2017-06-11 16:36:31
【问题描述】:
我有一个接口和一个实现接口方法但不使用implements 关键字的类。因此,我在类的实例上使用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
A1_groovyProxy@197d671
我希望能够覆盖toString(),但它 - 与其他方法不同 - 没有委托给实际对象。有没有办法让代理对象表现得那样?
【问题讨论】: