Groovy は、ExpandoMetaClass
インスタンスおよびクラスのメソッド/プロパティを POJO に動的に追加できるようにする を公開します。これを使用して、Java クラスの 1 つにインスタンス メソッドを追加したいと思います。
public class Fizz {
// ...etc.
}
Fizz fizz = new Fizz();
fizz.metaClass.doStuff = { String blah -> fizz.buzz(blah) }
これは、Fizz
クラスを次のようにリファクタリングすることと同じです。
public class Fizz {
// ctors, getters/setters, etc...
public void doStuff(String blah) {
buzz(blah);
}
}
私の質問:
doStuff(String blah)
これは のこの特定のインスタンスだけに追加されますFizz
か? それとも、Fizz
現在のすべてのインスタンスにdoStuff(String blah)
インスタンス メソッドがありますか?
前者の場合、インスタンス メソッドFizz
を持つすべてのインスタンスを取得するにはどうすればよいですか? doStuff
Groovyを作成した場合、次のことがわかります。
fizz.metaClass.doStuff << { String blah -> fizz.buzz(blah) }
次にFizz
、 などの静的クラス メソッドを に追加しますFizz.doStuff(String blah)
が、それは私が望むものではありません。Fizz
のすべてのインスタンスに、 というインスタンス メソッドを持たせたいだけですdoStuff
。アイデア?