Java反射5.JDK动态代理
ClassLoader????????????????????? Interface???????????????????????? InvocationHandler????????????????????? ??????????? ?????????????????????? ????????????????????????????? ??????????????????? ????????????????? ??????????????????????????
发布日期:2021-04-30 21:12:26
浏览次数:74
分类:精选文章
本文共 3142 字,大约阅读时间需要 10 分钟。
????????
??????
???????????????????????????????????????????????????????????????????????
?????????
?Java??java.lang.reflect????Proxy??InvocationHandler???????????????????????????????????????????????
?????????
Proxy?
Proxy???newProxyInstance???????????????????????
InvocationHandler??
InvocationHandler????invoke????????????????????????????invoke????????????????????????????
?????????
Proxy.newProxyInstance?????????InvocationHandler?????????????
???????
???????????????
- ????????????????
- ????????????????
- ?????????????????????
???????????
UserDao??
package cn.itcast_06;public interface UserDao { public abstract void add(); public abstract void delete(); public abstract void update(); public abstract void find();} UserDaoImpl???
package cn.itcast_06;public class UserDaoImpl implements UserDao { @Override public void add() { System.out.println("????"); } @Override public void delete() { System.out.println("????"); } @Override public void update() { System.out.println("????"); } @Override public void find() { System.out.println("????"); }} MyInvocationHandler???
package cn.itcast_06;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;public class MyInvocationHandler implements InvocationHandler { private Object target; public MyInvocationHandler(Object target) { this.target = target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("????"); Object result = method.invoke(target, args); System.out.println("????"); return result; }} ??????????
package cn.itcast_06;import java.lang.reflect.Proxy;public class Test { public static void main(String[] args) { UserDao ud = new UserDaoImpl(); ud.add(); ud.delete(); ud.update(); ud.find(); System.out.println("-----------"); // ???????? MyInvocationHandler handler = new MyInvocationHandler(ud); UserDao proxy = (UserDao) Proxy.newProxyInstance( ud.getClass().getClassLoader(), ud.getClass().getInterfaces(), handler); proxy.add(); proxy.delete(); proxy.update(); proxy.find(); System.out.println("-----------"); // ????????????? StudentDao sd = new StudentDaoImpl(); MyInvocationHandler handler2 = new MyInvocationHandler(sd); StudentDao proxy2 = (StudentDao) Proxy.newProxyInstance( sd.getClass().getClassLoader(), sd.getClass().getInterfaces(), handler2); proxy2.login(); proxy2.regist(); }} ???????
??
??????????????????????????????????????????InvocationHandler?????????????????????????????????????????????????
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2026年06月08日 09时51分05秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP系列:浅谈PHP中isset()和empty() 函数的区别
2023-03-01
PHP索引数组unset的坑-array_values解决方案
2023-03-01
PHP索引数组排序方法整理(冒泡、选择、插入、快速)
2023-03-01
PHP线程安全和非线程安全
2023-03-01
R3LIVE开源项目常见问题解决方案
2023-03-01
php缃戠珯,www.wfzwz.com
2023-03-01
php缓存查询函数
2023-03-01
php编写TCP服务端和客户端程序
2023-03-01
php编码规范
2023-03-01
PHP编码规范-PSR1、psr2 /psr3 psr4
2023-03-01
PHP编程效率的20个要点
2023-03-01
PHP网页缓存技术优点及代码
2023-03-01
PHP自动化测试(一)make test 和 phpt
2023-03-01
php自定义函数: 文件大小转换成智能形式
2023-03-01
php英语单词,php常用英语单词,快速学习php编程英语(6)
2023-03-01
PHP获取curl传输进度
2023-03-01
PHP获取IP所在地区(转)
2023-03-01
PHP获取IP的方法对比
2023-03-01
php获取json里面内容
2023-03-01