A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张志东 黑马帝   /  2011-11-22 17:08  /  1441 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

实现invocationHandler接口怎样跟这个类的方法关联,很是不解。教程上说的其实就是重写invoke方法,那与用反射的方式又有什么不同啊?

1 个回复

倒序浏览
你看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;
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马