【发布时间】:2010-10-21 15:44:24
【问题描述】:
我开发了一个类,它有一些增强整数的方法,它主要让我这样做:
def total = 100.dollars + 50.euros
现在我必须扩展 Integer.metaClass 做这样的事情:
Integer.metaClass.getDollars = {->
Money.Dollar(delegate)
}
我尝试将它放在文件的底部,在 Money 类声明之前,但是编译器说一个名为 Money 的类已经存在,我知道它为什么会发生(因为 groovy 使用文件名创建了一个类一个空的静态 void main 来运行此代码)。
我也尝试在类中使用静态块,如下所示:
static {
Integer.metaClass.getDollars = {->
Money.Dollar(delegate)
}
}
这都不行。
第三种解决方案是更改文件名(如 MoneyClass.groovy)并保留类名(类 Money),但这似乎有点奇怪。
还有什么我可以做的吗?谢谢。
【问题讨论】:
-
该死!我需要学习 Groovy。
标签: groovy metaprogramming expandometaclass