【发布时间】:2015-01-19 17:26:15
【问题描述】:
我想对我的一些类应用元编程转换,比如添加 printXxx 方法,如下所示:
class Person {
String name
}
def p = new Person()
p.printName() // does something
我有一个粗略的想法,一旦我有了一个元类,如何做到这一点:
Person.metaClass.methodMissing = { name, args ->
delegate.metaClass."$name" = { println delegate."${getPropName(name)}" }
delegate."$name"(*args)
}
现在如何将这段代码变成一个可重用的“库”?我想做类似的事情:
@HasMagicPrinterMethod
class Person {
String name
}
或
class Person {
String name
static {
addMagicPrinters()
}
}
【问题讨论】:
标签: groovy metaclass mop expandometaclass