00:00
那么接下来呢,我们要操作一个字节码的话,我们就必须得先获取到这个字节码,对吧。那我们得先获取class是不是?是不是只有这个class拿到之后,我们是才能去获取这个class里边的method,然后获取class里边的constructor,获取class里边的field吧。是不是我们想获取这些,这些和这些,我们得先获取它。那么我们接下来讲一讲,或者学一学我们怎么去获取class。啊,就是获取class的三种方式,各位啊,获取class的三种方式来。要操作一个类的字解码,需要首先获取到这个类的字节码。啊,怎么获取java.language class实例三种方式?啊,三种方式,各位。方式是什么呢?嗯。第一种方式是通过class这个类,注意啊,这个C可千万别小写啊,小写是个关键字。
01:05
这个C是个大写,这是个类的名字。java.language下边有一个class,这是个类名,类名叫class,看见了吗?很诡异哈。类名叫class,那么这个class这块呢,我们就直接就就C呗,C等于什么呀,叫class啊,它里边有一个什么呀。有一个方法,静态方法叫for f开始叫for静态方法,返回一个class,看见了吧,返回一个class,静态方法for括号里边需要跟一个什么呀?字符串,String class name类名。啊,所以这块呢,我们就直接写点for。啊,然后这边呢,跟一个类名,这个类名跟谁加,比如加。那么这个C啊,现在就代表这个class文件。
02:00
就理解什么意思吗?来,比如class c等于什么呀?class.for name写上一个全名啊,加va加va u啊,下面的date。对吧,哎,Class c3代表哎,class.for name,然后接下来这静态方法啊,java.language in。啊,Class c4啊class.four name,然后呢,再写一个,比如java.system。这个位置是一个什么呀?是一个字符串,各位啊,Class for name这个方法是个静态方法。看啊。第一静态方法,第二方法的参数是一个字符串。第三,字符串需要的是一个完整类名。第四。必须完整类名,完整类名必须带有包名啊,完整类名必须带有包名。
03:05
明白吧,加完浪包也不能省,也不能省略啊,加完浪包也不能省略,不能吧,写这么一个东西不行。啊,Class for name,它会返回一个C1 C2 C3C4,那C1代表谁呀?C代表什么?C代表谁,各位?C盘。Java jdk。JDK。然后library s RC。然后Java吧。有个Java吧。啊。对吧,有个。啊不不不不应该找这个,不应该找这个找字节码。找字节码,哎呀关了。找四件码啊来随便随便啊来加吧走加我吧里边吧里边吧里边找找一下来这有GRE加吧运输环境下面library library下有一个什么呀。
04:08
找一找啊,有个RT点价,这个我之前没有说过是吧,来点右键啊打开方式呢,用一下这个。JDK13的自建码你看不见啊,JDK8,所以我刚才打开是JK8,各位啊,JDK13的自建码都是隐藏起来,你看不见我也找不着啊,来Java language下有1LANGUAGE,这不language吗?String好,大家看这个string.class明白吗?现在的你的这个C代表的就是他。听懂了。代表的是这个东西。现在这个C1。代表的就是他。你CR代表的是哪个呀?CR代表的就是Java u这个报价。U,这个包向有谁啊?有,这个叫做date。这个class,现在你的CR代表谁呀?代表就是这个。
05:02
啊,很诡异啊,代表什么呀?string.class文件或者说CR代表什么类型啊?C1代表什么类型,代表string类型。啊,C2代表什么呀,代表date类型啊,C3呢代表什么呀,代表这个叫teacher类型啊,然后C4呢,它代表什么呢?代表system这个类型。那这块它有异常要处理一下,我们点过去看一下class not found exception这个类是一个类没找到,异常类没找到,大家看它的副类是反射异常,反射异常的类是exception,这说明我们的这个class not found exception是一个编译是异常,要求程序员的编写程序段必须对它进行处理,不处理编译报错,你看,编译报错了你看。是不是哎编译报错了,所以这块呢,你得处理一下啊,处理一下out加回车直接拆开处理就完事儿,把下面这个我们直接拿过来扔上去好吧。
06:09
扔上去啊,你看。是不是C1C2C3C4。啊,这是第一种方式获取class啊,有的学老师我们获取这干啥呀,我说了反射机制可以是可以操作自解码的,你操作自解码之前,你得先把自解码文件拿到吧,那你拿这个自解码文件怎么拿呀?哎,我现在教你嘛,拿这个东西怎么拿,只有拿到他才能拿到他,他和。没有他就没有他,他明白吧,得到它。那怎么获取?刚才给大家演示的第一种方式是通过一个静态方法class.four name这种方式来拿到一个class。这个C1啊,代表什么?C代表什么?C3C4代表什么啊。
我来说两句