00:00
再来看一下开的一个使用细节,叫投影啊,也是跟他这个跟我们的这个嵌套类相关的一个东西,叫类型投影。那么要讲这个类型投影呢,我们先给大家引出这个问题,然后再说怎么解决,大家先看这段一段代码,我在这一个内部类里边呢,我写一个方法叫做test的IC scanner这个东西啊来,先把这个东西写过来,同学们看代码就会出一点小出现一个情况。我在这儿再写个方法。好,这个方法呢,我把这个三拿掉,哎,我先写到这里说明一下啊,这里有一个方法。干什么呢?可以接收,可以接收一个an inner的实例,对不对?好,如果是在Java里面呢,我们传一个内部类时就可以了。那么这个就能。跑起来,我们看看这个地方会出现一个什么比较麻烦的事情,大家看这里。
01:06
好,大家这里啊,这里我们去调用,去调用什么呢?这个方法就是test这个方法,我们看会出现一个什么情况。首先我问大家一个问题,我们要去调这个test的方法,而这个test的方法是属于内部。内部对象的,那现在我来调用你们看一个情况啊,注意看inner点。Test,诶,同学们有没有发现?同学们有没有发现此时此刻这个IC的类型,原先我只是写了sc inner class,但是它前面自动给我加了一个AL1。OK,那就意味着我们这个SC2这个类型,其实你只要这写的二一,它就自动的给你关联到它对应的那一个外部对象。
02:00
那如果说我这改一下,同学们注意看啊,如果我把这个改成二,同学们可以拆一下,你看它这边也就自动切换成AL2了,这点其实是。这个就是如果有人要问你的话,他可能就问这个点,他说诶请问那个咱们累不累跟Java里面他的个那个类型是有什么问题没有,如果在Java里面他是不管这个的,因为Java Java的这个类部类对象呢,他只看这一个。而到了scan里面,他两个都要考虑,这样就出现一个什么问题呢,同学们,这样就出现这样的一个问题,如果我这掉自己没问题。我用婴儿二去传入自己的这个婴儿二也没问题,但是我这样写就会报错,报什么报什么呢?你看我写个婴儿二这个代码就通不过。因为你婴儿一,它在后面会自动的关联成那个AL1对应的那个婴儿,好,这个就错了,那怎么办呢?好,这就出现了一个问题,这里就体现出体现出一个问题啊,就是体现啊,又不是问题,我们先把这个写到这。
03:11
好在默认情况下,默认情况下什么呢?就是呃,SC的SC的内部类的实例和什么呢,是。是和和和谁啊,和创建创建该内部类内部类实例的外部对象对象关联的。关联的好,这样呢,我们在调的时候就无法去这个通用性的调,怎么办呢?好在这里呢,我们就推出了一个知识点,叫做类型投影。那么类型投影,听这个名字呢,大家可以感受到它的一种特色啊,类型嘛,就是太投影呢,就是我不管你是外部的还是那个,当我投完了过后呢,就变成一样了,就好像一个人一样,对吧,两个人还是不一样的,但是投影过去呢,就感觉好像就一个德行,你区分你能区分是谁是谁吗?
04:15
比如说比如说你你这边呃,有两个人站在的地方,一个是你媳妇是吧,111个是你这个女朋友是吧,一一打过去,这个戏打过去你你就不知道谁是谁了,对吧?我我打个比方啊,打个比方好这样子呢,就说这个投影它可以干什么呢?可以来解决哈,不是暴露我一点没问题啊,好这个就是投影,它就能达到这个效果,那怎么解决,其实语法非常的简单,只要做一个动作就可以解决了,怎么解决呢?同学们只需要在这个地方加一个动作即可,怎么写的啊,直接把这个外部内加到这个地方来加一个符号。解决了,好,其实这个听起来很高大上,有些技术听起来很高尚高大上,但是呢,解决确实很简单的就了,就是以后你们看到这个投影就知道他用这个方式来化解了,或者说他编译器一看到这个东西就知道,哦,这个人使用了自身这个类型投影的技术,那就他的意思就说我要去接收一个内部的时候,不要再考虑这个外部类型,只要是内部,只要是内部类这个类型就OK了。
05:30
啊,这个就是它的一个特色,当然你如果有意要区分,你就不要去去这个做类型投影,好,我写到这里啊,下面的这个语法。下面的这个语法就被称之为类型投影,类型投影,那么这个类型投影的作用是干什么呢?OK,这个类型投影的作用,哎,投影和O。投影投影的作用就是屏蔽啊,就是屏蔽屏蔽,屏蔽什么呢?屏蔽这个外部就是外部对象对内部类的一个影响啊,投影嘛,就是我刚才说的影子投过去可能就区分不了谁是谁了,对吧?啊屏蔽这个呃,这个外外部对象,外部对象对内部实力的啊,对内部内内部类对象的一个影响。
06:27
啊,他这个名字还是很形象的啊,影响。好,那么这个这个作用呢,就是你们在开发中,如果将来有这个情况,你说诶我就是要我将来就是一个内部类一,我就要把一系列的这个类部类全部吊起来,你就可以使用这个投影,好同学们我们跑一下看代码能否成功,好这个代码test的代码呢,应该都能跑起来,我这打印出一句话吧啊。叫使用了啊使用了。使用了那个类型投影类型投影。
07:02
来区分好,给他加一个这个好朋友们,我们执行一把,执行一把,我们看到这个代码呢,就能跑起来。哎,你看这里对吧,这个地方就给你打印出来了,不然的话他传不进去啊,传不进去好类型投影就说到这儿,好同学们,我们把这个类型投影呢,给大家再做一个简单的这个说明,好我这把它打开了。怎么理解这个啊,啊,怎么这个理解啊。呃,这个地方呢,说明下面调用test的正正确和错误的原因,Java我就不说了,Java为什么Java这个不存在,这个类型投影,它在Java中内部内是属于外部类的,因此在Java中调用这个方法,你随意切换就因而。一可以调去传输in inter2in inter,二可以传输in inter1刚才讲过这个,因为它是按类型来匹配的,所以说没有没问题,但是在SC中呢,内部类存属于外部类的实例,因此不行。怎么解决的呢?就是用这个解决方法。类型投影是指什么?在方法的实名上,如果用外部类井号内部类方式表示,忽略内部类的对象关系,等同于Java中的内部类的一个操作语法,我们将这种方式称为类型投影。
08:15
及忽略对象的推荐方式,只考虑类型,好这是我们这个知识点啊,同学们呢,有一个印象啊,有一个应用这里这里面如果要去再研究也没有意义了,就为什么它类型投影怎么做到这一点呢?没有没有必要再去了解了,好好同学们我把这个呢给各位同学板述一下。反述一下好的,那刚才我们讲了什么东西呢?诶讲了一个类型的投影。来给他说一下,对,给他说一下,我们讲了一个啊类型投影,类型投影看是标题几哈,还是我们嵌套类里面的。好,给大家一个标题三。啊啊,这段代码,这段代码我也我也不啰嗦了,直接把这个核心的拿过来用就行了,好吧,直接就这段代码拿过来用就行。
09:05
然后给同学们呢,标起来就行。好给大家放在这儿,然后呢,我把那个核心的那一部分代码给大家写出来。就在这个位置,就在这,哎,就在这里往下来一下。这里啊。好,我们这下面的这句话啊,这个影响这个粘到上面去。下面的这句话就是体现出我们的类型,投影标成黑色,粗体的这个蓝色。啊,然后呢,具体来说就它。啊,就他。好,后面呢,我们对它又做了一个简单的总结,对吧,关于这个类型的投影的一个总结,就这句话,诶解决方式类型投影它是干什么的。好,给同学们放到这里来啊,给同学们放到这里来,那么这个地方呢,我们来一个小的箭头。
10:01
对,小的箭头上面呢,是这个案例,也给大家来一个小的箭头,好,这样就区分开来了,好,同学们,我们截取一段视频。
我来说两句