黑马程序员技术交流社区

标题: 关于生成代理类的疑问:很是不解。 [打印本页]

作者: 张志东    时间: 2011-11-22 17:08
标题: 关于生成代理类的疑问:很是不解。
实现invocationHandler接口怎样跟这个类的方法关联,很是不解。教程上说的其实就是重写invoke方法,那与用反射的方式又有什么不同啊?
作者: 吴雨翔    时间: 2011-11-22 21:02
你看Proxy.newProxyInstance这个方法的第二个参数,通过就这参数就可以把类与代理类关联起来了,重写并非是真正重写,而是在invoke()这个方法内部的method.invoke()方法前或后加入自己业务逻辑,代理比反射更容易实现这个功能.
例如:
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object result = null;

try {
log("method starts..." + method); // 加入的业务

result = method.invoke(delegate, args); //执行原来的方法

logger.log(Level.INFO, "method ends..." + method);// 加入的业务
} catch (Exception e) {
log(e.toString());
}

return result;
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2