00:00
行,那接着我们往后再说,那除了这个复类之外呢,我们说还可以去获取它所实现的接口。运行时内实现的这个接口。哎,下边这个操作呢,其实也比较简单,如果大家有这样的需求,你就这样去做就可以了,首先也是拿到我们大class的一个实例,那接着通过大的class点,我们想获取这个对应的运行实例,它所实现的接口get get是必要的啊,检查接口日就interface的。但是注意它的反应值类型是一个class构成的数组,为啥是数组,诶是不是可以多实现啊,哎,所以我们就会拿到可能是多个啊,那可能是多个,那你就for循环呗,哎,大class,哎,C interface。
01:00
诶,塞一下完了。哎,这呢,我们就实现了两个接口,诶第一个呢是叫comparable,第二呢叫interface,哎这里要注意就是我们person类它呢继承了一个父类,父类里边呢还实现了个接口,是不是没拿到,还没拿到啊。那你要想拿到他怎么办?你先拿到它的负类,负类再去get interface的时候就行了,哎这呢我换行一下啊,诶额外赠送一个功能是吧?嗯,S out啊哎我呢首先通过class.get它的叫super class,哎这个super class呢也是一个class,再去get它的是不是interfacece。哎,INTERFACE1这呢,还写一个for循环。哎,这个叫INTERFACE1C。哎,这不就出来了吗?哎,这样就行啊好,这呢是我们获取运行时类的接口,这个呢是额外的一个获取运行时。
02:09
啊类这个负类的啊,这啊负类啊实现的这个接口啊,其实这里边没有新知识点啊,这个呢讲过了,然后这个呢,刚才也讲了,其实这就拼一起的一个方法啊OK,这个呢就完事,再接着我们获取当前运行实类它所在的包。哎,获取运行时类啊所在的包。哎,Test这个来一个六,还是我们这个大的class啊,我就一直到尾都用它了啊嗯,然后呢,拿着我们这个class点获取它的包。
03:05
就package呗,哎,就这样就完了,很简单啊。哎,S out一下,这个报名我们换一下吧,叫pack这样啊。CTRLCCTRLV一下。诶这呢,我们就找到它的包了啊,就是在这个com.X点扎一这个包下行,这个也比较简单啊,那这是获取它所在的包,那还有什么需求啊。哎,咱们是不是在这个类上面还加了一个注解呀。诶,或许运行是类啊,他声明的注解,诶做这个事儿,诶这块呢,我们把它呢就删掉,还是先拿到我们这个大的class的实例,然后通过class点,诶get是不是又是an notation,嗯,因为呢,你这个类上面呢,又可能有多个注解,所以还是数组函数组啊,然后接着包循环变例,哎,An notation这个呗。
04:18
哎,这样就完了,咱们当前当前这个person呢,确实生明了一个my notation,然后呢,我们回过来。看这不知道在哪去了,在这呢。那这呢就拿到了,嗨,是吧,哎,这那就拿到它了啊行,那么咱们前面讲注解的时候提过啊,说你要自定义的注解,定义完以后不知道干什么用,在这虽然写了也不知道要干啥,哎其实呢,主要是通过反射去读你这个注解的内容,根据这个内容呢,我们判定你到底需要干什么啊,就是后续呢,诶根据拿到的咱们刚才演示到的这个注解啊,比如说就一个,那就拿角标为零,拿到这个注解以后去拿它的这个内容,或者呢,根据这个注解你就知道它要干什么了啊有的时候呢有内容,有的时候没有内容了,哎再去做一个执行,哎,这呢就体现出来你这个注解的一个使用了啊好,这呢是获取运行时类声命的注解,嗯,那么到此为止,咱们关于获取运行时类的这个叫完整的类的结构呢,就讲到这儿啊,哎,这个整体来讲是比较悲壮的是吧,哎,说了很多这个方法啊,但是整体上呢,呃,对大家的要求不高。
05:32
哎,你知道呢,通过反射呢,我们能做这样的一些事情就可以了。里边呢,有几个呢,倒是需要关注一下啊呃,后续有可能要用到,就是一个呢,提到了刚才获取负类的泛型,呃,这个呢可能会用到,嗯,还有一个呢,其实这个呢有可能也会用到,说获取一下我们当前这个类呢,它所实现的接口,呃,这个呢叫动态代理中会用。那动态代理,咱们前面是不是讲过那个静态代理啊。
06:02
诶有一个同学说讲过,那就是讲过是吧?啊这个都忘了啊,咱们讲接口的时候呢,后边提到过哎设计模式啊,这个一个是那个呃方法的工厂的这个设计模式,呃一个呢,就是我们讲的代理模式是吧?代理模式的话呢,像这是一个呃接口啊嗯,这个接口咱们当时讲过什么样的例子呢?对助理跟那个明星,嗯还有这个呃,这是让你是联网的一个服务器,这个代理服务器,哎稍微提到过这个例子啊,明星呢叫做被代理类,哎然后呢,这个他的这个经纪人啊叫代理类,哎我们让他呢,是不是都实现某个接口。哎,这个被代理类想执行一些功能,咱们实际上是通过代理类来做的,这呢就是一个代理模式的,那咱们这一章呢,最后要提到一个应用场景就叫动态代理啊,什么叫动态代理呢?就是这个代理类啊,我们在编译的时候,或者编写代码的时候呢,不指明这个代理类到底是谁。
07:06
在运行的时候呢,我看你这个被带类是谁,根据这个被带类呢,我动态的帮你造一个代理类。哎,这就叫做动态代理,那怎么能做这个事儿呢?诶咱们发现代理模式里边被带类和代类都得实现同一个接口,或者叫同一套接口啊,不一定是一个了,那现在我们就可以怎么办呢?哎,我这个代类怎么造呢?我就先看看我要代理谁在运行的时候呢,把被代类加载进来,被代类你实现的接口我也实现啊,就相当于我们这个代理类,你要找对象的时候,我需要拿到被代类它所实现的接口,哎,我也去实现这个接口,诶我们就会用到这个获取你这个被代理类所实现的接口这样一个功能啊行,这就是一个简单的一个应用场景啊,获取包啊,注解啊,这个注解呢,现在这个这个弹射里边,呃,这个框架里边呢,这个用的比较多了啊,啊,像这种情况的啊,只不过呢,我们不一定是在这个用的是类上面的,你可能是用的某一个方法上面的啊这个情况好这呢,我们就简单做了一个总结。
我来说两句