Groovyは、each()およびその他の多数のメソッドを java.lang.Object に追加します。Groovy メタクラスを使用して Java クラスのデフォルトの each() を動的に置き換える方法がわかりません。
新しいメソッドを追加する方法を見ることができます:
MyJavaClass.metaClass.myNewMethod = { closure -> /* custom logic */ }
new MyJavaClass().myNewMethod { item -> println item } // runs custom logic
ただし、メソッドをオーバーライドする場合、同じアプローチは機能しないようです。
MyJavaClass.metaClass.each = { closure -> /* custom logic */ }
new MyJavaClass().each { item -> println item } // runs Object.each()
私は何を間違っていますか?Groovyでeach()を動的にオーバーライドするにはどうすればよいですか?