我想对我的一些类应用元编程转换,比如说通过添加 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()
}
}