00:05
请大家多关注我的主页,看更多的更元初级视频。这节个讲类型断言。在更元中,类型断言的作用思想接口类型转换成其他的具体类型。在Java里,这个强制类型转换就型,但在勾元里,几个类型转具体类型是无法用强制类型转换的,只能用类型断言。微信为什么接口要转换成具体类型呢?那是因为接口只能保存值,但无法进行操作和访问,只能转换成具体类型了。才能进行对应的操作和访问。另外,负接口、转子接口。也是用类型断言,凡是跟接口转换成其他类型的都叫类型断言,而不叫强制类型转换,这跟Java源是不不一样的。我把这两个先复制过去,然后写代码体验一下。
01:07
首先来一个接口。Apple。An。Interface。C。再来一个结结构题,把这个复制过去。然后这个dog已经实现了案接口接口转,具体类型如何转换呢?我们先来一个杰,嗯,豆豆的杰克地指针。然后再来个空间口。那X等于D。
02:00
嗯,一个是能直接调调C吗。明显是不可以的。因为X它是空接口,并没有C方,Y虽然说这个里面有C方。你也是无法使用的。我们这个时候我们呢,需要把接口转换成这个新这个类型才能调用C方法如何如何转换呢。用内存断言,第二冒号等于。Is there?这个X是接口点。内心新到的。注意强制类型转换是是什么格式呢?强制类型转换是类型。然后具体的是。这是强制类型转换的格式,那下面这个是类型断言。
03:05
然后锻锻炼完了,然后就可以调用了。运行下。我们可以看到能运行成功了。断言还有另一种形式。第三。OK,两个接收变量括号等于。然后右边还是一样的写法,这个点新的高。这个OK代表什么?代表断言成功的。钻运成功了,自然而然就会第三掉C。如果断言失败了。那我就打印一下。断言失败。我们再运行一下。
04:03
我们可以看啊,这能这也能运行成。但是断言为什么要区分这两种情况呢?我们可以。再再来一个X等于一。我们都知道一它并不能转化成新这个类型。我们看一下有什么区别。我们先看一下第一种方式。直接一个直接一个接收变量。我们可以可以看到。直接报叛逆卡了。我们再看。再看这种情况。我把上面这个注释掉。我们可以看到。
05:00
打印的是断言失败,并不是把派那卡。这两这两种情况的区别已经很明显了,这个会派他。这种情况他是不会怕离开的。然后我们再讲一下负接口,转子接口。我把这几个复制下来。这个X它是空接口。这个按钮它是带方法的接口。一个是肯定是负健康。然后我再来一个子接口A。
06:04
然后把夫妻的转直接开来。跟类型端也是一样的X点。就注意这个地方不不是痘痘,因为这转换成新的,它就是跟上面转换成具体类型是一样的嘛,我这里直接转换成阿里玛的接口类型。嗯,再调用A加C。我们看一下。运行结果。我们可以看到能运行成功吗?这负接口转子子接口也必须用内心断言。我们都知道阿里和这个空间口。
07:01
都可以,都可以把料直接复制给他们。当S等于六二的时候。然后。然后把X转换成A类型。然后一点是这这样可以吗。照理来说应该是可以的。但事实上跟我们想象是不一样的。意思就是存的纯利类型是。是不能转直接直接课的。权利类型。不能转。杰克被帕克。
08:00
这个要注意啊,这个这个我们的想象当中不不太一样嘛。我们再看类型判断。类型判断。我们可以直接用或者百分。这两种方式都是把类型转换成类型名,是字符串的形式,我们直接判断字符串就可以,但是实际上我们最后采用了。太不吃味些,因为这是强类型的,强类型会更加安全,不会容易出错的。另一个原因,它是可以判断说是接口,呃,直接用type或者摆T。是无法判断,是是无法进行接口判断的,因为这两种方式是无法打印出接口名的。
09:04
我们写代码体验一下。嗯。我能来一个。来一个杰克的数组。Interface。里面可以穿一些整数啊。字符串啊。不啦。没处。然后来一个第二类型。再来一个。各个类型。New。注注意空间上还还需要加一个办法吗。
10:04
然后我们变了一下。Mar。擦。我们可以用Switch。Type。X点。然后再用kiss。然后X点。这个是代表无类型,这个是说是空类型吧。然后我们还有配硬盘。EL类型,我们可以看到直接写T,而不是字符串的T。
11:02
整形。第二个是字符刷的,我们直接写类型。这是不是相对安全很多?肯定是不会出错的。因为你你写错了,他直接给你报错了。然后来一个布类型。工人。嗯,空类型已经说过了,然后来一个新的的类型。我们可以看到,也可以这样写。你把这个直接打印出来吧。
12:03
我们注意我们还可以写接口类型的。我写在上边这。黑是什么呢?我们把打印出来。然后。他。可能是其他类型的,这个我们不知道是什么类型。我们可以运行一下,看一下结果。
13:01
By print as on and。你们可以看到。这这几种类型都打印出来,整形肯定是整形的字符串。不,不是类型。可能型这个是是属于的接口,我们可以看到这个新的的并没执行的,我们把它另外注释掉。那这最后一个可能是新的的类型了。我们可以看到,事实上确实如此。这个是type西。
14:02
不仅仅可以判断出具体类型,还可以判断出是哪个接口。
我来说两句