Я определяю метакласс
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)
В чем причина?Насколько я понимаю, я делегировал другие методы суперклассу, метод newInstance()
должен по-прежнему вызываться.