00:00
大家好,我是海波老师,反射的相关概念啊,咱们讲的差不多了,那么但是光讲是不够的啊,咱们接下来呢,准备给大家通过代码来演示一下反射的一些具体代码的操作啊,那咱们这里呢,咱们就拷贝一个新的,咱们拷贝把这个改一下啊,咱们叫做零三,然后呢,把这个呢,我们改一下啊,咱们写上一个test啊,咱们做一个简单的测试,我们点击OK,点击完成以后把名字呀,这些东西呢,咱们稍微的都去掉啊,咱们都去掉,然后呢,把这个呢我们也去掉。去掉以后呢,我们在这里写上突do啊,咱们写上反射,然后那我们写上练习啊,咱们做一个小练习,把咱们前面讲的一些东西啊,咱们稍微的用代码来写一写,用一用啊,那么我们这里的练习的主要目的呢,是就是那个反射的基本语法和基本操作了,那咱们就做一个员工的登录功能吧,咱们叫员工啊的一个登录啊功能。那什么意思呢?就是啊,员工通过账号和密码,咱们进行登录的操作,那如果账号和密码呢,他匹配成功了,那咱们就登录就成功了,那如果呢,我们这个匹配不成功呢,那咱们就登录失败了,如果登录成功呢,我们的那个登录啊,就返回一个处,那如果你失败了呢?诶咱们就返回一个false就可以了啊就是这样的一个功能。
01:12
其实功能并不复杂对吧,但是我们所有的操作呢,我们都要求通过咱们的反射来完成,而不是像咱们以前啊,咱们利用一个对象,咱们直接调用方法,对吧,咱们不这么做,咱们全都通过反射来实现啊,咱们动态取得他的类的对象,然后慢慢一个一个去做啊,咱们这么来写好了,那么我们首先呢,我们就先创建一个员工的类吧,好吧,咱们写上它啊,咱们来咱们叫员工,那这里写上一个class,我们叫做EPA可以了。写完了以后呢,我们要把那个账号和那个密码啊,咱们作为这个类的属性呢,咱们声明一下,那这里呢,我就写上它了,来我们叫做public,然后呢,String,我们叫account,咱们这就叫账号嘛,好,再来一个,我这里呢,把它改一下,咱们叫password,诶好了,那么我的账号和密码咱们就有了,那么有了以后呢,我们这里再添加一个我们的一个方法啊,咱们是这样的,所以呢,我们写上它,咱们叫public啊,咱们叫word,诶别忘了咱们叫布类型的啊,咱们写上它叫log in,然后呢,我们写上它,我们这个布尔类型啊,就表示我们这个登录啊,是成功还是失败啊,那么逻辑其实并不复杂,对不对,那所以呢,我们这里呢,就来写上if啊,咱们写个括号,我们判断一下,那怎么叫成功呢?诶咱们这样,咱们这个账号和密码啊,如果他们都是我的命,我就认为它成功了,那所以呢,我这就这么写了,我写上in,然后呢,点我们的equals啊,然后呢,我们写上它,我们叫account对吧,咱们的equals就是专门用来比较。
02:40
物串的嘛,然后呢,我再加上一个,并且然后呢,我们的in,咱们叫in,点我们的ES,然后呢,写上这个叫password,我们这里啊,不考虑什么加不加密的问题啊,咱们就直接判断就可以了,两个我们的属性,如果都是的meanin,我认为它成功了,所以这里我return true。那么我们写个else,只要你有一个不对,我们这里呢,就给它return我们的force,诶,那不就可以了吗?所以我们这里写上它,诶,Return false就是这么一个简单的逻辑。
03:11
好了同学们,那么我们现在啊,咱们当前的员工我们已经准备好了,那么员工准备好了以后,我要创建对应的对象了,对不对,但是我说了,咱们可不是像以前那种方式啊,咱们直接拗出对象来,咱不这么做,我怎么写呢?我用反射的方式,诶老师那反射怎么创建对象呢?诶大家还记得吗?咱们前面是有一个什么,咱们叫做来写上它,咱们叫构造对象吧,或叫构造方法对象吧,对不对,那咱们这里这么写上。我们叫做EP。然后呢,点class,点一下VR补全,它补全以后,我们这里把这个EP我们去掉,诶我们这么写,你这样写的话,就把这个类型的信息我们已经得到了,等同于拿到了它的字解码,你拿到字解码以后,我们这里呢拷贝,拷贝以后点它里面就会有一个方法,咱们叫declared,有一个叫做constructor,哎,就是这个东西,诶老师你为什么要用这样的一个方法呢?因为啊,咱们这个EP里面根本就没有构造方法,对吧。
04:13
所以呢,是Java虚机给他提供的一个默认声明的一个方法,所以呢,我们这里就选择declare的,然后呢,我的构造方法是无参的呀,所以我这里不用传任何的参数,我直接来我们点一下VR回车,回车以后大家会发现我们这里呢,就得到了一个构造方法的对象,就是它。哎,老师啊,那你这个构造方法的对象你拿到了,那你该怎么把这个对象构建出来呢?所以我就想想它,咱们叫做构建对象。这个构建对象非常的简单啊,咱们只要有了它以后,我们直接来点儿,点儿了以后,诶,你看到没有,有一个叫new instance啊,就是构建实例的意思,所以呢,我们点一下VR回车,回车以后,你现在它不就是把emp对象就创建出来了嘛,对不对?诶就是这个道理,但是呢,我们前面讲过了,你现在光有我们的对象,你的属性没有值,你怎么做登录呢?也不行吧,所以呢,我们接下来干嘛呢?我们写上它叫获取,我们叫对象的属性,对吧,你把属性拿到了,咱们获取类的属性还记不记得,记住啊,我们这里有两个属性,而且名字咱们都知道,所以我们就写上把EP class我们拿过来,然后呢,我们点我们这里写上它叫get,嗯,我们叫做,诶,我们这个是公共的啊,咱们是public,所以呢,我们get的时候,我们直接写上叫field就可以了。
05:39
啊,如果他私有的话,咱们就得拿那个叫做declared对不对,那我这里呢叫get fieldd,我就写上它叫account,诶你把那个account写上,写完了以后点一下,你看看我们的这个账号的这个属性我就取到了,同样道理,咱们再来一个,我们叫password,把这个拷贝一下,诶行了,我现在两个属性我就获取到了。
06:01
哎,老师呀,那你获取到了以后,那这个属性没有值也不行啊,所以我需要给它附上值,所以来写上它,我们就要给我们的属性赋值,那怎么赋值呢?诶,我拿到这个属性对象account,然后呢,点一下它里面就有一个set方法,这个set的方法呢,很简单,就表示给它赋值的意思,但是你得告诉我呀,你给哪一个对象赋值呀,对吧?我们这个对象是EP,我不就是想给它赋值吗?诶所以我第一个参数我就把EP传进去。可是你赋值,你赋了什么值呢?诶我们写个逗号,第二个我们就是传值了,我们写上它叫做什么呢?叫张三,你这么写完以后,就等同于把张三的这个字符串赋值给了这个EP对象的这个属性,诶就这个意思,那好了,那这个大家能明白的话,我把这个password给它替换过来不就行了吗?你替换过来以后把它也写成张三,这就意味着我们给ERP对象的这个password属性附了个张三,你看看属性就付完了吗?对吧?那你付完属性了以后,是不是就可以去做登录了,所以我们就写上它,咱们叫什么呢?叫做登录。
07:11
那你登录是一个方法呀,你得有这个方法才能去执行这个方法呀,那所以我们要获取的就是一个登录的方法,其实我们也有获取方法的相关操作吧,所以拷贝拷贝以后呢,我们点一下,诶,咱们叫get,嗯,这里呢,我们叫做嗯,Method,诶咱们写上master,然后写上它,咱们叫log in,你这么写了以后,诶你会发现我就把那个method的方法取到了它的名字就叫log in,我们这里没有任何的参数,所以我这里也就不传任何的参数了。那么我们再去用的时候,也就是说我们获取没问题,那么接下来我们要做的事情是什么呢?我们叫做调用。啊,调用我们的方法。那么怎么调用呢?我们把这个log in啊,我们拿过来,我们写上点,点了以后呢,我们写上叫invoke,这个invoke就是调用的意思,诶,那你调用的是哪个对象的方法,你把EP你拿过来,诶这样的话就可以了,可是你这个方法执行以后是有结果的呀,所以咱们把这个结果咱们给他接收一下。
08:15
这个就是我们的结果,咱们叫breakout,诶,行了,同学们,我现在属性也有了,我们的方法也有了,那么我们的结果也有了,那现在呢,我们就去打印一下,所以这里呢,我们直接来我们的result,哎,这就是我登录的结果,那么咱们讲过了,咱们的逻辑非常简单,咱们的逻辑啊,就是判断账号和密码是不是额的密,那你这明显不是吧,不都张三嘛,所以咱们的结果应该是false吧,所以我执行一下,你看结果就是false。那如果呢,你把它改成我们的admin,诶你把这个改成我们的admin,那这样的话呢,我们的属性都是admin,你再去做判断,你调用的时候,结果不就应该被出了吗?好,我们再执行一下。执行完成以后,你会发现结果它就为true对吗?哎,咱们这个小的例子咱们就做完了啊。
我来说两句