目前我正在使用Groovy 1.8.2,以下代码按预期方式为我工作:
Class.metaClass.getAt = { args ->
println "Called ${delegate}[${args}]"
TypeDefinition.create(delegate, args)
}
我在我的DSL中使用它,如下所示:
TypeDefinition instance = List[MyOwnClass]
当我转到Groovy 2.0.5时,这个功能失败了“Missing method:static java.util.List.getAt()with parameter some.package.MyOwnClass”。所以问题是如何使它与Groovy 2一起使用?
答案 0 :(得分:0)
使用类别适用于2.0.5:
class ClassHelperCategory {
static getAt(Class cls, String arg) {
"Called $cls[$arg]"
}
}
Class.metaClass.mixin(ClassHelperCategory)
assert List['hello'] == 'Called interface java.util.List[hello]'