1
我想一元編程轉換應用於一些我的課,讓我們加入printXxx方法,這樣說:在Groovy中有一個可重用的元類代碼的優雅方式是什麼?
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()
}
}
我使用聯合編譯,並且永遠不能使特徵在這種設置下工作(生成的存根文件無效)。另外,我不想要一個方法(printProperties),我想爲每個屬性(printName,printAge等)動態生成一個方法。 – 2014-11-21 15:06:54