JDK动态代理原理探究(二)

现在我们来探究一下,为什么?

为什么invoke方法中,method在反射执行invoke时,为什么参数选MyIh中的proxyObj而不是重写的invoke方法中的参数proxy?为什么

proxy是什么?有什么用?

看下图

看见proxy就是代理对象!serviceA==proxy为true

这里将proxy暴露在回调函数invoke中,目的是返回最初始的调用者(如上图中的serviceA)。便于重复代理的实现(多层代理),不是很清楚使用情况。

比如,我们在Java普通方法中,可以用this代表调用当前方法的对象。那么这里,是不是也是为了一些类似于普通方法中this的操作,而增加的一个proxy对象,让你可以实现你的目的。

至少对于外面的调用者而言,可以做到这样。

在回调函数invoke中知道,这个是哪个对象的回调函数。


为什么invoke方法中method执行不能用proxy呢?

那样的话,相当于又重新执行 用代理对象执行say(999),就是无限递归!Stack Overflow

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文是我自己在秋招复习时的读书笔记,整理的知识点,也是为了防止忘记,尊重劳动成果,转载注明出处哦!如果你也喜欢,那...
    波波波先森阅读 12,455评论 6 86
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,685评论 1 32
  • 一、基本概念 1.什么是代理? 在阐述JDK动态代理之前,我们很有必要先来弄明白代理的概念。代理这个词本身并不是计...
    小李弹花阅读 16,572评论 2 40
  • 回溯童年,首先蹦出的画面就是夏天。在万物生长繁茂的季节,小院里色彩斑斓。藤蔓、树荫、躺椅、水缸,应该再配上袅袅的炊...
    紫飞鱼21阅读 313评论 3 5
  • 固执一直是我性格里自带的特点,随着不断地学习新知识,不断地和高手接触,不断的实践,越来越发现自己简直一无所知!外面...
    元初阅读 1,746评论 4 2

友情链接更多精彩内容