00:00
来,那咱泛型这块还没有说完啊,咱们继续往下看,来再加一个class,我们叫generic test02啊。大家注意听啊,在JK8之后,JDK8之后引入了自动类型推断机制。推断推断啊机制自动类型推断机制称为什么呀?称为又称为什么呢?钻石表达式。盖尔曼的表达式,各位看好了啊,我们之前。是不是这样写啊?对吧,哎,好消息是。后边这个可以这样了,注意啊。的间号。
01:01
这里的类型会自动推断。啊,前提是JDK8啊之后前提是JDK8之后才允许。叫自动类型推断,自动类型推断。啊,这这个位置可以不写了,明白吧,以前我们这个一八之前这得写啊,你空着不写就报错这个吧,自动类型推断啊叫带钻石表达式。长得像钻石,你看就这个这这个这个东西像钻石,你懂什么意思吧,就这个东西它像钻石,它钻石表达式,就这个钻石表达式,Di的表达式啊。这是JDK8之后的,你看你的编译器版本啊,如果你JDK的版本比较低,你这个用不了,你这样写就会报错。啊,然后你看my list这个调I的方法,大家看参数还是那个那个object不是了。
02:00
你规定这个list集合里边存animal,你看这个里边是调I的方法的时候,你只能往里面放一个animal,你看看见了吗?你不能放别的呀,对吧?哎,有一个animal是不是,哎,My list.add那你有一个cat进去行不行,没问题对吧?哎,My list.add你有一个什么呀,叫做bird行不行,没问题,因为你animal cat bird这几个,这个cat和bird都是animal的子类型吗?对不对啊,就这样。就这个啊,主要是说这个东西。下边来便利一下,便利啊。嗯。那这个便利的话,迭代器呗,是不是迭代便利谁呀,便利animal吧。是吧?好,加上去之后呢,我们在这里调用我们my list集合的方法,然后Y循环eat点什么呀?Has next,有的话eat点什么next,你看这个方法反馈是什么,是animal。
03:02
是animal啊,然后你可以直接调叫move就行了。对吧。动物在移动啊,如果你要调子类中特有的方法,那你还得转型啊,还得转型。自动类型推断,我强调一下,这儿可以省啊,可以省。再来一个。List及格,说string对吧,ST list等于new一个什么呀?Release好,你看它自动就是不给你加了,这就不用加不用写是吧,然后调ST list,调它的一个方法叫ADD,你说new一个cat进去那不行。类型有问题呀,对吧,它不允许存这个呀,你停到这,你看它提示啥,他说提供了一个猫,对吧,需要的类型是一个string。对不对,这个类型不匹配呀,对不对,哎叫类型不匹配啊,类型不匹配,然后呢,List掉它的A,放一个字符串ABC进去,你看。
04:04
对吧,哎,List调I的方法放一个什么呀,123进去不行啊,类型不匹配啊,也是类型不匹配啊,来这个也不行,对吧,哎,List的集合,然后加进去。啊,进去。来。嗯。是吧,哎,有一个元素,那么再来呗,S tr list.id再放一个,比如说HTDP3W点百度点。com行吧,Str调用我们的list.i在这放一个东西,放一个啥,我看看啊,放一个这个HTTP3w.BG power note com。这边也改改吧,比如说这叫HTTP。www.126.com好了,那么接下来加进之后呢,我们可以对它进行便历啊,对吧?哎,遍历遍历这一块怎么遍历啊,特遍历,你遍历的一一定是字符串吧,因为你集合里面存的是字符串啊,因遍历字符串,那这个时候呢,我们就应该是str list调用它的这个方法返回一个什么呀,迭代器。
05:21
对吧,迭代器,那你对迭代器进行便利使用迭代器has next,有的话调用这个迭代器,它的方法叫next,大家看这个next方法反过来就是string啊。对吧,他为什么反馈string啊,因为你现在迭代器迭代式string啊。泛型嘛,是不是,哎迭代器迭代式字符串,你这个集合里边放的确实也是什么呀,字符串,那我是字符串是不是就可以调subst string这个方法。对吧。Subsre学过吧?Subsre从哪开始啊?假如从01234。567从七开始。
06:01
对吧,好截完之后呢,产生一个心字符串,我们把这心字符串输出。执行一下。啊。对吧,这是上面是一个字符串,不放进去,放进去放进去了吗?然后在这儿不是迭代吗?每循环一次是不是拿到字符串对象啊。对吧?好,那我问大家,如果按照以前的写法应该怎么做。你如果不使用泛型,你会你你得你得怎么做,各位。你不使用泛型,你返回的是不是一个object,如果你返回object object能调sub string这个方法吗?调不了吧,为什么你这块可以去调subs string方法呢?因为我们用了泛型嘛,我们直接取出来就是字符串,所以字符串可以调,这个方法明白吗?就直接通过叫通过迭代器啊,通过迭代器获取了死准类型。
07:06
的数据就直接调用什么呀,String类的sub string方法截取子字符串对不对,那如果没有用泛型,如果没有使用泛型,那你这块代码可能是这样的,点next是吧,取一个object出来,那你object这一块呢,它还不是个字符串,你得判断一下OBBJ,它instance of是一个字符串吗?如果它是,那把它转换成一个string。对吧,哎,转换成一个词string,那么这个时候你是不是才可以去调stop string这个方法呀,对吧?所以这个泛型还是有用的,各位啊,这个泛型还是有用的,给大家提个醒,以后呢,我们要用泛型就是集合,你在创建的时候指定集合中存储的元素类型,你在迭代的时候,你也需要指定迭代器迭代的数据类型。
08:02
这样的话,我们将来直接通过迭代器取出的这个数据就是这种类型,我们可以直接调方法,哎,减少了我们向下转型的操作。明白什么意思吧?哎,收到的话打个零,各位。
我来说两句