class AInterceptable implements GroovyInterceptable { def add(val1, val2) { val1 + val2 } public Object invokeMethod(String name, args) { System.out.PRintln("invokeMethod: " + name) def method = AInterceptable.metaClass.getMetaMethod(name, args) if (method) { method.invoke(this, args) } else { System.out.println("no method find: " + name) } }}obj = new AInterceptable()println obj.add(11, 13)println obj.add("Hello ", "World!")obj.add()obj.del()返回invokeMethod: add24invokeMethod: addHello World!invokeMethod: addno method find: addinvokeMethod: delno method find: del2、对于POJO和部分POGO类来说,无法修改原始类,使用MetaClass类的invokeMethod方法。class AGroovyClass { def add(val1, val2) { val1 + val2 }}AGroovyClass.metaClass.invokeMethod = { name, args -> System.out.println("invokeMethod: " + name) method = AGroovyClass.metaClass.getMetaMethod(name, args); if (method) { method.invoke(delegate, args) } else { System.out.println("no method find: " + name) }}obj = new AGroovyClass()println obj.add(11, 13)println obj.add("Hello ", "World!")obj.add()obj.del()返回invokeMethod: add24invokeMethod: addHello World!invokeMethod: addno method find: addinvokeMethod: delno method find: del
新闻热点
疑难解答