00:00
好,同学们,我们打开这个新的章节,先把16先关掉啊,先把16这个章节先关掉,那么作业呢,大家就是有时间一定要去做啊,来打开反射。反射。好,我们看一下。那么反射这个内容呢,我们这儿一共大概有20个幻灯片要讲,我们先来看,提出需求,还是老规矩,我们讲课呢,一定要说这个东西有什么用,他能干什么,不然的话你这个就不好玩。先看一个问题吧,同学们,那既然是反射,那什么时候可能用到反射呢?看这里。前面我们曾经学过结构体的序列化和反序列化,大家应该是还有印象的,当时呢,我们有这么一个情况,就是说我们结构体里面可以加一个这个东西,大家还知道这个叫什么吗?这叫什么东西啊?班长,这叫标,这是是什么东西?T,对,是不是要标签呐,标标签这个东西用来干什么的呢?
01:03
这个是不是为了解决,呃,就是序列化的时候,我们可以指定一个这个就是它的那个K,那个值是不是K的名字,哎,当时是这么来的,那么当时我们用这个东西,用这个结构体的这个标签,我们就解决了什么呢?就是我们去进行一个序列化的时候,它的这一个字段的名称可以根据我指定的这个名字来序列化。对不对,那这面当时我讲过,它的底层的机制到底怎么回事,是不是我说到会用到反射,但是我们没有具体的去讲,只是提了一嘴。所以说呢,现在引起大家思考,为什么序列化这个过后呢,它的这个名称你看就跟它保持一致了,告诉大家这里面就是我们的反射。啊,当时我还说了一句话,学习后回头解决,现在我们就要解决它了,但是呢,因为这是提出一个概念,说说怎么解决,我们把它基本知识讲完再解决,这是第一个需求。
02:10
第一个有可能用到反射的地方,那么反射除了在这个地方用得到,别的地方有没有呢?用的地方还很多。再来看第二个。第二个应用的场景,比如说将来我们有这样一个需求,说这里有一个匿名的函数,我把这个函数赋给了一个变量。我又把这个函数又赋给了一个变量,当然这个时候这个相当于是函数变量了。那这个时候呢,我们假设有这么一个需求,听我讲啊,这听起来有有点吃力啊,同学们。假设你有这样一个需求,你想干什么呢?你想编一个适配器函数。你想编一个适配器函数干什么呢?作为统一的处理函数,就是说你给我,你给我传进来一个函数的名称。这有个空空呢,我写的是interface空间口,然后这边呢是它的参数。
03:03
是个是一个可变参数,我希望通过这个桥,就通过这个东西,你将来去使用它,就把我的函数T次的一传进去,再给他传一和二,因为它原先定的是一和二,我就能把这个程序跑起来。同样我也可以把T的二这个函数传进去,再给他传三个参数,因为它是需要三个参数又把我们T2运行起来了。好,同学们,这种就叫适配器函数。那么在一些高级的使用里面,就说将来大家去写一些比如说底层的代码,比如说将来你们有机会去写购的框架,就自个儿去研发框架啊。这个这个反射,它最大的价值是干什么呢?就是自个儿写框架。自个儿写框架的时候,这个反射就必用无疑。当然我现在给有些同学讲,可能大家清楚你我们班有很多同学以前学过Java意义,你看Java意义有些同学都学过一个非常经典的一个经典的相经典的这个框架叫什么框架呀,Ru to habit spring spring m VC,你们有没有发现,你们有没有发现一个非常奇怪的现象,你你在这个,你就说一个例子吧,你在这个,你在这个外部页面输了一个用户名和密码。
04:23
一提交结果你的那个X被调动起来了。你action是一个什么呀?好,Action是个类呀,那action被谁实例化了?底层谁在玩这个事情呢?全释我们的反思,在给你玩所最简单案例看有些同学学学了一个框架时,最不能理解的是我这输了一个用户名,输一个密码,我提交给这个,提交给提交给这个网站过后,提交给外部过,结果发现ier运行起来了。这个X难道没人去实在化了吗?难道没人去管它吗?全是底层的一个反射给你搞出来的。如果你学过。PHP,比如像小鹏学个肯定会学一个叫TP的框架吧。
05:05
对吧,字。对,他就是反射过来的,那将来我们以后同学们要自己去学这个框架,或者自己要去开发框架,比如说将来我们班有些同学做这个购物程序,做了做了两年三年,诶突然你们这个项目,你们这个项目经理说咱自己来写一个框架吧,比如说有这样一种品性,中国也有很多人写框架呀,好,这个时候你的这个反思就是特别重要。当然,如果你到自个让你去开发框架这这个层面,那你技术已经很牛了。就是你已经站在什么什么角度了呢,你你在你写的空间让别人去用了,那那这个就很厉害了啊,所以说呢,在写这个里面,就就类似于像这种写都会用到,像写适配器函数,这是又一个应用场景。好,那么这两个应用场景呢,是很经典的哦,我先把它反述一下啊,两个经典的来,第一个呢,呃,就是我们引出了这个反射的必要性来写反射。
06:05
OK,那这方我我给他搞一个标题一对不对,好我们看了几,看了几个问题,第一个呢。看这样一个问题对吧,引出我们什么地方可能用得到,这样就引出了反射,反射的一个使用,使用的一个场景,就什么地方会用到呢。给他来一个标题二。给他来一个标题二在这里好,我举了一个就是呃,结构体的标签的一个应用。好,待会呢,我们会看到这东西它是怎么拿到的啊,学完了过后你们就知道,诶,他怎么拿到这个东西的那一下一下就明白了啊,一下就明白好,然后呢,我们把它放在这里,这是第一个应用场景,还有一个应用场景呢,就是函数的适配器啊,使用反射。写到这儿,使用反射,使用反射机制啊,编写什么呢?编写。
07:03
编写函数的这个适配适适配器。适配器。这个适配器听起来很高大上啊,其实它是个它是一个逻辑上的东西,也就是我们的桥连啊,有些人叫桥连接模式,叫桥连接。小链接。OK。好,那这个地方呢,又是一个应用场景,但是他用的场景还有很多,还有很多我没有全部举完啊,待会我再说几句。那多了去了。好,这是又一个问题。又一个问题,你你再比如说你你在老师再再给他举一个例子啊,比如说。我们想用想用这个反射机制去调函数。比如说你有结构体。这个结构体,我把一个变量给你,我把一个结构体的实例给你,我要求用反射去拿到这个结构体所有的。字段信息,所有的方法信息,然后呢,用反射把它勾吊起来,诶这就很有意思了,甚至你还可以用用反射可以去创建一个。
08:12
结构体的实例,这就很厉害了啊,我们都会讲到啊,我们都会讲到,应该说应用场景还是非常多的好,这个呢是我们讲的,呃,反射的一一个应用场景,也就说在哪地方有可能用到,我们先介绍到这里。
我来说两句