I下定义
class MyMetaClass extends DelegatingMetaClass {
MyMetaClass(Class theClass){
super(theClass)
println theClass
}
Object invokeStaticMethod(Object object, String methodName, Object[] arguments) {
if(methodName == save ) {
println save method
return
} else {
return super.invokeMethod(object, methodName, arguments)
}
}
}
A类:
class A {
private String a
String getA(){
return a
}
}
登记元:
def amc = new MyMetaClass(A)
amc.initialize()
InvokerHelper.metaRegistry.setMetaClass(A, amc)
现在,我尝试利用:
A a2 = A.class.newInstance()
我发现错误:
Caught: groovy.lang.MissingMethodException: No signature of method: A.newInstance() is applicable for argument types: () values: []
at MyMetaClass.invokeStaticMethod(MyMetaClass.groovy:37)
at test.run(test.groovy:139)
原因是什么? 我的理解是,我把其他方法下放到超级类别,即<代码>新内容(代码>)方法仍然可以采用。