如何在Groovy中添加对象的全局可用MetaMethod?

时间:2013-01-11 01:45:23

标签: groovy

(这是一个通用的例子)

我想创建一个可以在任何对象上调用的实用程序方法,它将具有如下签名:

class StringMetaData {
    Object value
    String meta
}

Object.metaClass.withStringMetaData = { meta ->
   new StringMetaData(delegate, meta)
}

随着我的计划中的任何地方的想法,我可以做类似的事情:

def foo = 1.withStringMetaData("bar")

现在我可以获取值foo.value或附加字符串foo.meta

在本地环境中,我可以在Object上定义这个元方法,但是我想在我的应用程序中全局使用它,这种元方法在哪里可以使用的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

也许一个常规的扩展模块可以帮助你。我自己从未尝试过,但文档说明,您可以向JDK类添加自定义方法。