如何在Groovy中的对象上添加全局可用的元方法?
(这是一个概括的例子) 我想创建一个可以在任何对象上调用的实用方法,它将具有如下签名:如何在Groovy中的对象上添加全局可用的元方法?,groovy,Groovy,(这是一个概括的例子) 我想创建一个可以在任何对象上调用的实用方法,它将具有如下签名: class StringMetaData { Object value String meta } Object.metaClass.withStringMetaData = { meta -> new StringMetaData(delegate, meta) } 我的想法是,在我的程序中的任何地方,我都可以做如下事情: def foo = 1.withStringMeta
class StringMetaData {
Object value
String meta
}
Object.metaClass.withStringMetaData = { meta ->
new StringMetaData(delegate, meta)
}
我的想法是,在我的程序中的任何地方,我都可以做如下事情:
def foo = 1.withStringMetaData("bar")
现在我可以抓取foo.value
作为值,或者foo.meta
作为附加字符串
在本地上下文中,我可以在对象上定义此元方法,但我想在我的应用程序中使其全局可用,使此元方法随处可用的正确方法是什么?也许groovy扩展模块可以帮助您。我自己从未尝试过,但文档中说,您可以向JDK类添加自定义方法。也许groovy扩展模块可以帮助您。我本人从未尝试过,但文档中指出,您可以向JDK类添加自定义方法。+1文档可能希望注意此功能仅适用于Groovy 2.0或更高版本。+1文档可能希望注意此功能仅适用于Groovy 2.0或更高版本。