00:00
来同学们,咱们开始上课了啊,我们这个上午在最后的时候啊,给大家说了一下这个反射机制,那么这个反射机制呢,我们还没有这个。还没有说这个讲太多的东西是吧,咱们今天上午最主要的是把这个线程这一块,剩下的这个内容,什么守护线程啊,定时器呀啊,还有这个实现现成的第三种方式呢,我们在这儿呢,给大家学了学,讲了讲,那么还有这个wait和notify这个方法呢,大家注意啊,这个呢,下去之后呢,写写一下我今天布置的那个作业行吧,哎,交替输出啊,交替输出怎么去输出,那么再往下呢,有一个这个反射机制,对吧,我们上午呢,其实就是已经开启这个反射机制这块的一个内容了。那么首先反射机制有什么用呢?在这里我只能先告诉大家,反射机制是可以操作我们的字节码文件的。啊,自己码文件的,那么我们操作自己码文件有什么用啊,现在可能还没有办法给大家解释啊,这章节的内容比较简单一些,较简单对。
01:01
比较简单啊,嗯,因为只要会查文档啊,只要会查帮助文档。啊呃,就可以了啊就可以了。那么这块呢,咱们反射机制啊,所相关的这个软件包是哪个包呢?是这个java.language下面的reflect这个包下面的一个东西,大家有没有发现呢?就我们从前面讲过来,到现在为止,基本上都是在讲什么呀,什么Java,呃,每个包是不是Java浪包,是核心包。随后我们又讲了个Java u包是一个工具包是不是,然后又讲了一个Java IO包,IO包是一个IO流这一块的,对不对啊,然后呢,又讲讲了讲什么呀,我们加了language。就整个这个Java SE这一块啊,哎,这块主要主要讲解的啊,还是JDK中常用的什么呀,常用的类啊,常用的方法其实就是这些啊,就是其实Java SE中最难的是什么呀,是面向对象之前。
02:05
啊,面向对象之前,就整个这一块实际上是最难的,大家好好想一想这个TE下,但是需要去理解的,This呢,也需要去理解的,对不对?Super呢,也需要去理解的,这些东西其实都是很难的,尤其什么类的抽象啊,对吧?啊,对象的创建等等这些什么属性啊,方法呀,行为呀,动作呀,这些东西都是很难去理解的,但从了面向对象,从面向对象讲完之后,大家好好回忆一下。我们往后的内容是不是确实比前面这个面向对象的要要简单很多,因为不需要你理解了。你有没有发现你在学string这个类的时候很简单,你只需要顾着一件事就行,就是怎么查文档。他问他对吧?哎,有时候我以为我理解了,可突然就会发现还早,嗯。好了,咱们先不讨不探讨这个问题了啊,就是说大家呢,不要说哎呀怎们感觉往后越学越难呢,其实你要是感觉越越学越难的话,那我觉得你这是错觉了,因为我们并没有讲什么原理性的东西,你像这个wait don fair呢,它可能就稍微有有一定的难度,是不是,哎,理解方面,那么凡是理解方面呢,其实我们已经都已经过去了啊,再往后呢,其实就不是说理解方面的东西,就是一些查文档的东西。
03:16
啊,反射机制这块呢,在这个包各位啊,我再声明一下,咱Java language reflect这个包下,我说这一张简单是因为只要会查文档就行,但对不起,如果你不会查文档,那可能很糟糕啊,不会查文档。哎,你可能很糟糕,明白吧,啊,你可能很糟糕啊,所以呢,还是要注意听一下啊,查文档的一个技巧啊,那么在我们这个反射机制当中呢,相关的一些重要的类有哪些呢?有这个java.language下面的class,这是首领。这个类呢,其实代表的是某一个类,代表的是某一种类型,或者是代表的某一个字解码。那加va.language reflect method,这个method就代表这个类当中的方法,这个呢就代表类当中的什么构造方法,而这个呢,就代表什么呀,哎,我们类中呢,哎,属性啊属性,呃,那么这块呢,我们整个这个就看作是一个class,然后呢,我们这个里边的这个我们叫做什么呀,属性,这个呢,哎,我们叫做什么呀,构造方法,然后这个呢,我们就叫做哎方法。
04:25
那么在今天上午的时候,我们在最后啊,给大家说的时候,我们是要操作我们的字解码,首先呢,我们要获取到这个字解码,那么获取这个字解码呢,我们有三种方式,是不是哪三种方式啊,第一种方式就是通过class.for name的这种方式来获取,对不对?第二种方式呢,是我们有了这个对象,我们通过对象呢调get class方法,大家注意,Get class这个方法实际上是我们object类中实现好的,那我们调的这个方法是object类中的方法,包括这个get class,这个也是先创建对象去调我们的get class,这个是老祖宗带的,所以说Java语言当中任何一个类它都有get class方法。
05:06
啊,可以返回一个class,那么另外在这儿呢,双等号返回一个处,这说明什么呢?这说明双等号大家一定要记住啊,它判断的是什么呢?是两个变量中所保存的地址啊,两个变量中所保存的这个对象的内存地址。啊,所以它结果如果为true,就代表这个CE1和X,这个CE是谁呢?就是它,这个X是它,那么这说明什么呢?C1这个变量和X变量里边保存的指向的什么呀?字解码是同一份啊,就像我们这个图上是一样的,C1和X指向同一份字解码,而我们的C2和Y呢,都指向方法区当中的同一分子解码,就是这样的一个情况啊,情况内存图是这样的。那么我们在这里呢,看一看第三种方式啊,第三种方式,第三种方式是什么呢?是Java语言中任何一种类型,包括基本数据类型,它都有什么呀?点class属性啊,这个呢,是咱们大家之前没有学过的,好大家看啊,比如说在这里呢,我来一个什么呀,Class y等于string.class你看。
06:17
是不是,哎,这个Y已经有了,是不是这是Z吧。嗯,对吧,哎,然后class k呢,等于什么呀,等于我们现在是date点什么呀,Class。是不是,哎,Class,我们再来一个class f呢,等于int.class你看。是不是哎class,哎E呢,等于什么呀,点你看都有这个属性。记住啊,Java语言当中任何一种类型,它都有这个点,Class属性。都有点class属性啊,点class这个属性呢,可以让它返回这种类型,Z就代表string类型,你就这样理解Z代表什么呀,代表string类型。啊,这个K呢,就代表什么呀,代表date类型。
07:03
明白吧啊,这个K代表date类型,那么这个F代表什么呀?代表int类型啊,这个E代表什么呀?哎,E代表double类型啊,其实还是字写码还是字写码文件啊来我们在这里呢,我们输出输出谁啊,输出我们的X和这个Z的关系,你看看X等于等于Z这个结果肯定是除了。肯定是数了,来我们运行一下,因为你X呢是一个string嘛。对吧,哎,那你这个Z呢,哎,Z呢,它也是个string嘛,是不是,哎你看都是true。所以说呢,这个案例呢,我最主要告诉大家呀,在Java语言当中呢,我们获取class类型的这个实例啊,有三种方式,第一种方式呢,是class.for name的这种方式,但你参数呢,需要跟一个完整的类名,要带包名,第二种方式呢,是对象点get get class方法。那第三种方式是什么呢?哎,第三种方式是任何一种类型啊,它都有这个class属性啊,就是任何类型啊,点什么点这个class属性可以了。
08:11
这样的话,哎,就可以拿到啊,那么这个Z对吧,还有这个XX,还有这个C,它们指向的都是同一个string字解码啊,都是钝字解码顿类型,你可以这样去理解啊,这样去理解。行了,那这个呢,也没办法,各位啊,大家下线之后呢,多敲多练多写对吧?啊,只有在你多练多写的情况下,你才有可能记住它。啊,多多练多写啊,你才有可能去记住各位啊,记住。
我来说两句