现在我们来探究一下,为什么?
为什么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