00:00
好,后面呢,还有第二个最佳时间,这个时间呢,比刚才那个要简单,而且就是在前面案例上修改一下,怎么办呢,用反射方式来获取结构体,它的标记,这这个已经讲过了,这地方有个修改字段。你们去看一下我是怎么实现的,修改这个字段啊,修改这个字段,修改这个字段是怎么做的呢?这个要在上面改一下这个事啊,我把这个代码应该是这有我我给同学们放到这吧,其实很简单,一段代码我就给同学们放这地方,你们晚上的时候呢,花点时间看一下,这里面就用到了一个非常重要的东西,就是刚才讲的另外一个知识点,哪个知识点呢?就是在传的时候啊,等于传地址进去,大家看这个地方唯一的变化就是我在这个地方传了一个这个东西。艾特服务进去。但这个地方没关系,这个这个没用啊,这个你看不看无所谓,这个地方我传了一个地图,然后呢,所以在在在打这个A的时候呢,这个黄狮子就不是了,被改成了白象精。
01:07
那这里面你看我大林悟到的是在原型基础上加了一个element。就是因为我希望在反射里面把它这个字段给改变过来,好往上看一看,这是第一个,第二个应用。第二个应用呢,也是一个非常经典的最佳反射,最佳时间是不是适配器的写法。四配机的写法呢?代码在这里,其实大家一看也不会觉得特别难啊,我先带着大家简单看一看,怎么写的呢?大家看这个地方一看就是我写的是一个呃,测试用例,这个测试用例你要跑起来啊,如果你要跑起来,你得加点东西。我爸,洗全吧。拍啊,比如测试,因为我这你你不写全这个跑不起来,你看主函数都没有。啊,主函数都没有,是因为我写的写的一个测试用例,那你把这个都带进去。把油带进去,你往上一跑,这是个测试用例,你你就得按测试用力量去命名了啊,同学们。
02:06
把那个先想一想testing,然后呢,肯定还要用到一个反射包。反射包就是那个reflection。Reflect,还有一个什么呢?呃,应该还有,我看有没有别的没有写了。好,这这个应该应该这样就就就能跑起来了啊,这个就能就能跑起来了啊,然后呢,注意这个文件命名的时候啊,同学同学们,这个文件命名的话,你得取这样的名字,文件命名,文件命名必须以这个叉叉叉点test跑啊。就是前面这个你随便改啊,但是后面呢,必须以test的结尾。啊,命名这个大家去跑一下。好,第四一个应用,第四个应用呢,是使用反射操作任意结构体,这个了解。这这这段代码很简单,它是什么样呢?这也写这个测试用例。
03:03
它可以干什么呢?它可以去操作任意的结构体,大家看几个代码,简单的搂一圈,这是一个结构体。这是一个结构体,看我的这个测试用例面,我先创建了一个VR,里面呢是一个model,它是一个指针。是指向这个user的一个,呃,一个指针类型,然后呢,SV是一个reflection的value的一个类型,然后呢,我先创建一个model,这个地方是一个什么呀指针啊,Model是指向一个U2指针,然后呢,我用它去获取SV。注意,这个地方是相当于是个指针类型的,然后呢,我写了个日志,把它类型打出来了,然后呢,这个SV.element这个就相当于取到了这样一个东西,reflect.value然后呢,我通过find by name找到它的user ID,并且设置,再通过find by value element再设置这个地方其实就提示大家怎么去修改这个字段了。
04:04
啊,修改字段也很简单SV嘛。他原先是指成SV,我取到它对应的那个真实的reflection value,然后呢,调用它的这个find by name啊,把子设计设置进去,这就相当于说我可以操作任意的这种结构体,你这个结构体是什么,我都可以帮你操作,在底层可以帮你操作,OK,还有一个呢,就第五个案例,第五个案例是使用反射创建并操作结构体,这个就更厉害了。就说我连结构体的创建都可以用反射来完成。那具体来说呢,大家简单看一看。代码也也不多啊,代码也不多啊,大致是这么一个意思,同学们看,首先呢,我前面这个不说了,这肯定这地方也是一个开始的一个框架,然后呢,这有一个user的一个结构体,这地方我写了一段代码,从这开始的啊,首先我有个VR里面有user的指针,有一个这个类型,有一个这个其实一个是type,一个是value。
05:11
然后呢,你看我这注释写的非常详细。第一个先获取类型user。然后呢,这个写的日志不用管它。大家看到这个地方就应该是个指针啊。这个ST就应该是个指针。你看我这st.CAD打印出就是PTR,然后呢,我st.element让ST指向真正的这个类型。我主向他类型干什么呢?我有用啊,我有用,然后呢,大家看这里很猛啊,这个地方有点类似于你们学的Java里面那种。就是在底层创建对象。啊,如如果有同学学过Java,应该看起来似曾相识的感觉,就是我把这个这个指针穿进去,最后返回来element,这个element,同学们啊,这个element还不是一个实例,它是干什么呢?六了一个value类型的值,该值持有一个指向type的新身形的灵芝之针,这里面还没有东西。
06:12
就数据还没有,但是它已经指向了一个什么呢?它其实已经指向了一个这个user的一个地址,但是东西没有,紧接着呢,我这里输入输出了两个日志,这个你不用看,这个就很重要了,Model,这个model是怎么写element.interface大家看这句话是不是能看懂这句话是不是我先把它转成一个空接口,再用我们的一个类型断言把它重新转成一个UUR,也就是说这个时候model和这个element其实他们都指向了一个user的一个地址空间。那这就这样就意味着如果我改变它或者改变它,它们两个值都会发生发生变化,那我做了什么事情呢?我通过element取到了它的真正的指向,这个指原先是指针,相当于说这样的感觉啊,这个是指针,它指向一个真正的空间,这个空间就是我们的UR的一个空间,然后呢,到了这个地方,我element等于element的时候,这个时候这个这个时候element就真正的指向这了。
07:18
就这句话就能就能让它真正指向这个地方,数据空间,但是model还是通过粒子指向的。Model还是行,那这个时候我做了件事,Element by的设值了,设置好,当我把这个值设完过后,Model里面的值也就也就有了,大家我再把把这个图简单画一下啊,就这个图是这样子的,一步一步来,首先element。ELEM。它应该是一个指针,所以说它相当于先指向了一个地址。这个地址在指向了一个真正的数据空间。这个空间就是我们的user的一个空间,但是可能有啊,六过后就有了,只是数据没有好,紧接着呢,你做了一个model model是什么呢?Model是也把它指向它,就相当于说这有个model model它呢也指向它。
08:14
啊,因为他们是通过这个element去指向的嘛,你通过你原先element去获取这个空地址在指向的,所以说他们两个都相当于指向这个地址空间引用到同一个的数据空间,紧接着呢,你做了一个这个动作,element.element就让这个element呢换了一个地址。只将他。直接直的空间为什么这样做呢?因为你只有这样做才能够去往这里面赋值啊,因为我们刚才讲了去去修改这个值总是element.element然后再做的好,下面呢,我用这个东西往里面找到它的U2ID,并附了个1234,相当于说在这里面写了个1234,不写了,紧接着再写了个link name啊link name。
09:02
好,这样做完了以后呢,在我去用model访问的时候,这个model model因为是指针,它取的时候,它还是能把这个取出来,所以说model这一方针会把它的一个地址打出来,如果model点内蒙呢,好也把这个值取出来了,因为你这改变了,就把它改变了,好它是这么一个逻辑,就相当于说他做了一个什么事情呢,他做了一个创建,呃,并操作结构体的操作,这些代码都能跑起来啊非很很容易跑起来,你自己去跑一下,绝对没问题,现在老师写的这个PPT上面代码全部都是通过的,一点问题没有。啊,绝对一点问题没有,全是通过的,那么你只需要晚上呢,花一点时间把它看一下,不懂的地方明天可以跟老师交流,这是第一个,第二个晚上有个作业,晚上有个作业,这个作业呢,比我们讲的最佳时间的难度要小的很多,小很多,但是呢,要求同学们去做看看了。
10:01
第一个。编写一个开结构体,里面有两个字段,这个大家应该能写出来,方法有一个叫getup getup里面呢,给我传一个名字进去,就代表是谁在进行这个计算,这两个字段要赋值好。使用返回便利啊,就呃这个这个便利啊。啊,便利应该便利啊,使用反射写错了。使用反射注听使用反射便利开了结构体的所有字段信息,这个其实跟刚才我们讲那个16的一一一模一样,只是你去把它看一遍,然后呢,使用反射机制完成对get sub的调用,输出的形式是某某某完成了减法运算,把它的这个值。你你输的这个值输出来,把结果输出来,那么这个汤姆呢,是从这个地方传进去的,而它的八和三呢,是通过设置。
11:06
它的那个字段的值来实现的啊,这个题呢,你要把它做完。那么对反射呢,应该理解的就更透彻了啊好,这个作业呢,我希望同学们晚上把它做一做啊,那当然如果说确实做不出来,同学呢,也也可以减降低一点难度,就说如果说你确实做不出来,你就把这个八三写四啊,就不设置了,其他的应该都能做出来,好我把这个呢,给他给大家简单的板述一下啊好,我们看看一下。好,呃,这个第一个呢,我们讲了一个最佳实践的这个题,对,好把它先讲到这里来,对,修改字段。好,明天呢,我们花点时间可以做一个评价,这个都都可以啊,啊,但是呢,现在大家同学们要去自己练一练。好,第二个最佳案例,对最佳案例在这个位置先把它放在这定义的适配器。
12:02
好,这个呢,大家也去跑一跑啊,至少把它跑起来吧。第三一个啊,第第四一个了,第四一个呢,就是使用反射去操作任意的结构体类型。任意的结构体类型。好,第五一个各位同学,第五一个呢,就是使用反射创建结构器并操作。这第五一个。好,这个2345呢,同学们再去看一看,明天呢,我再花一点时间给大家做一个点评,好最后一个作业,做一个作业。作业是什么呢?这是我们的一个课后的一个作业,这个作业我也给大家阐述到这里。哎,作业我给大家说到这里,第二标题二要求同学们完成这样一个练习。好的。好最佳时间的最后一个练习。那么同学们这个呃,要注意怎么去完成它啊,好,那关于这一块呢,我们就先介绍到这里。
我来说两句