0

目前我正在使用 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 时,此功能因“缺少方法:带有参数 some.package.MyOwnClass 的静态 java.util.List.getAt()”而失败。所以问题是我怎样才能让它与 Groovy 2 一起工作?

4

1 回答 1

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]'
于 2012-11-30T16:32:00.143 回答