java动态代理底层探讨

关于静态代理我就不说了,完全是自己的思想去实现。

动态代理的例子我也不写了,我这里仅仅写几个简单的类来说明一下

interface person

class  teacher implements person

class proxyfactory  implements invacationhandle

 

class proxyTest

 

先说下我的问题在那里,问题就在proxyfactory中的实现invactionhandle的invoke方法,

问题1:第一个参数proxy的作用

问题2:当我debug的时候,这个方法返回的是个null

问题3:当method的invoke方法的object参数如果换成proxy的话,会是死循环

 

google上看到一个高手是这么说的

1.当debug的时候看到proxy并不是null,而是$proxy ,而且被绑定到proxyfactory对象名为h

2.另一个哥们说proxy看似代理对象,其实仅仅是为了检查权限的

 

 

请高手们给个详细的解释,期待中!不知道原理是很痛苦的事情。

++++++++++++++++++++++++++++++++++

新发现,补充一下:

1.proxy实际就是生成的代理对象,但是不知道为什么要传入那个参数。

2.生成代理对象虽然不是为null但是调用一些hachcode等方法时会报空指针异常

3.我的推测是当生成的这个代理对象去执行一个方法的时候,因为这个代理对象本身是一个$proxy0(debug的时候看到的),肯定jvm对这样的对象有一定的监听机制,监听到以后会去调代理对象所属的invocationhandle的invoke方法,吧method以及args都传递过去,但是现在还不明白为什要吧proxy也传递过去。

 

待续.......

++++++++++++++++++++++++++++++++++

再补充:

又另一个兄弟这么说:

说动态代理实际是解析被代理对象的class文件,加入新的东西,用流的方式处理的。不知道正确不,也同样希望高手给个答案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值