首页 > 学院 > 开发设计 > 正文

Groovy拦截

2019-11-08 02:02:26
字体:
来源:转载
供稿:网友

Groovy拦截

1、Groovy对象可以通过实现GroovyInterceptable接口来实现拦截,因为每个方法都会先调用invokeMethod方法。
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
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表