1
私はインターフェイスとそのインターフェイスのメソッドを実装するクラスを持っていますが、implements
キーワードを使用していません。このため、クラスのインスタンスでas
-coercionを使用します。これはこれまで意図したとおりに動作しましたが、実際のインスタンスではなくプロキシで呼び出される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'キーワードを明示的に使用します。 –