【发布时间】:2020-07-08 09:29:48
【问题描述】:
我正在编写一个带有一些包和一些类的小型 Groovy libaray。对于其中之一,我想调整Map 的asType 方法,所以我可以这样写:
import cm.ConfigMap
oldimpl = Map.metaClass.getMetaMethod("asType", [Class] as Class[])
Map.metaClass.asType = { Class c ->
if (c == ConfigMap) {
new ConfigMap(rootMap: delegate)
} else {
oldimpl.invoke(delegate, c)
}
}
Map m = [ "key" : "value",
"a" : "z" ]
ConfigMap config = m as ConfigMap
这在 Groovy 脚本中按预期工作,但我不知道如果我想在我的库中使用它而不是在脚本中,我可以在那里放置 MOP 指令,以便我的 asType 实现可以是在使用我的库的所有地方都使用过。
【问题讨论】: