jdk代理
2022-08-05 16:52:31 8 举报
jdk代理 源码分析
作者其他创作
大纲/内容
((Fly)birdProxy).fly();
if (!Modifier.isPublic(cl.getModifiers())) { AccessController.doPrivileged(new PrivilegedAction<Void>() { public Void run() { cons.setAccessible(true); return null; } }); }这里还对构造器的权限做了判断,如果为私有的还会把权限打开,这里有些好奇什么情况下会创建私有的构造器,该代理类的构造的创建都是JVM实现的,具体细节在java代码中是没有体现的。
业务Handler实现类,内嵌原对象,添加扩展
InvocationHandler
securityManager安全校验
获取代理类的构造器
可以发现,生成的代理类都有一个参数为InvoCationHandler的构造器。显然InvoCationHandler的实现类的对象就是通过该构造器注入进去的。这样代理对象就依赖了InvocationHandler,而InvocationHandler又依赖了原对象,以及对原对象进行了invoke扩展。
创建代理对象
使用构造器创建代理对象实体return cons.newInstance(new Object[]{h});

收藏

收藏
0 条评论
下一页