【发布时间】:2011-02-14 19:00:53
【问题描述】:
Groovy adds 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()?
【问题讨论】:
标签: groovy overriding each metaclass