00:00
我们不是说过动态代理,他应该是在内存中动态构建这个代理对象的,对吧,我们没有必要在这在写这么一个类,那么是不是没有必要呢?你想想看,如果我们在测试的时候。然后就比如说我在我在这个地方,我是不是需要拿到一个动态代理对象。这个地方是不是我用这个动态代理对象,我是不是才能测试它的功能,这个能理解吧。啊,那你没有刚刚的这个代码,意味着你这个动态代理的对象,你要怎么获得。哎。你是不是要要调用这个proxy的这这一堆的这个方法。你要在这儿调用这个方法,就是你需要一个动态代理对象,你这个地方你需要一个代理对象,那你在这个地方你就需要。这一大段的代码。能明白吗?每次你需要一个代理,这,这不就是生成动态代理对象的吗?
01:00
你这个代理你每次你都这么写,你就写烦死算了,我们肯定不会这么干了,对吧,我把这个动态代理的这个功能在。那我把这个动态代理功能提前写好放在这,而且我这个也给了是个代理工厂的意思,所以我在这个里面需要传入,哎,目标对象啊,需要传入目标对象,那么我在代理的时候就可以代理这个目标对象,就这么干啊,这么干,所以呢,我这个地方啊是写了这么一个类,这个类呢就是为了简化,省得你每次都写这一堆代码,因为你要一次动态代理对象就得搞一次这个代码,没必要,这是第一点,第二点。我们说过,如果是你当前的这个类本身的方法,哎,那么就在这不是我接口中的方法,Public voidd,然后one这么一个方法。啊,然后呢,输出,哎,这个融化,然后点点点。
02:02
如果是你本类中的方法,这方法是不被代理的,此方法啊,不能啊,此方法不能被代理,不能被代理就是不能啊增强功能,什么叫不能增强功能,就是没有那个预定场地,预定时间和结算费用。懂我的意思吗?为什么它是不能的,试试看嘛,试试看。然后你会发现我现在这个superstar流里面是不是有个万的这么一个方法,那我来测superstar流,哎,这是不是在测superstar。对吧,传进来这get agent拿到了那个代理对象。然后呢,这个代理对象的,因为接的是service,所以口里面的事方法和性方法我都是可以被代理的,这两个方法可被代理,这个能理解吧,啊,但是呢,我如果想去。
03:01
拿到了这个代理对象,我想去代理我自己本身的那个方法,A j jt打点,我是不是要带调用我的万方法。你万方把这个service这个接口回来是不是就不行了,但是呢,我动态代理的对象,我说object类型,所以我把这就做成superstar,刘刘里面是不是有办方法。能明白吗?哎。我们改造一下,看一看我流里面是不是有办方法的,这时候这个万就能被掉了,但是报错。报啥错呢?来看。他说类型转换异常告诉你不能够将代理对象转换成你当前的superstar流,不能,这两个类型不兼容,啥意思啊,这个代理对象是不是里面已经有增强功能的内对代码?你的这个原始的superstar流里面,是不是只有那个万的那一个方法,就只有你原始的那些方法。
04:08
那么我已经增强功能了,和你自己原始的这个套不住了,接不住能懂吗?你如果这个地方换成super star流了,是让我拿到这个代理对象,他已经有增预定时间,预定场地和结算费用那一堆的功能,这个功能是你这边没有的。所以就是此对象已经非彼对象,他们已经不是原先的那个对象,你已经错过了。啊,所以这个代理对象的功能更强大,我用接口没毛病,因为接口可以指向性的实现,你是啥我都能指向,我指向新的实现就完了,但是你原始的这个类接不住更多功能的代理对象接不回来,你接不回来,你这个万方法就没法调用,就有这么个事儿,听懂了吗?啊,所以这个事我们在笔记里面也有强调,就是这些呀,就只能代码写完了以后往回撸它,然后你在理解老师代码讲义里的,就笔记里的概念,然后你会发现。
05:17
我在写了那句话。是他自己本类的。没有吗?阶梯个动态带没有就加在这了,来,我记得我加了啊,然后本类本类中的方法,然后非接口啊非接口。非接口中的方法不能被代理啊,啊,他没有代理那个说不能被代理,他不能被增强那个预定时间,预定场地和结算费用,那个功能不能被代理,你就记住就行啊,是固定的好,那么这是我们关于JDK动态代理的一个补充啊,就这么多内容了,那么你可能就最终对这个代码不太理解,那我就希望你尽量的去理解,像对于这种方法的调用,去返回去找以前咱们。
06:18
反射的那个知识点的视频,然后再去听,再去理解啊,这就是JDK动态代理就这么多。
我来说两句