00:00
我们看一下这个上界,他的下一个案例还有没有,那么我们看开的,刚才这个案例已经说过了,就是刚才讲的这个案例,那下面呢,我们再来看一下一个测试题,我们来再来理解一下这个上界,呃,它的这个含义是什么啊?它的含义是什么?那么我们来看看这个代码哪个地方能对,哪个地方不能对,好同学们看一下这里啊,我在这写的一个类叫二地球,对吧?这是animal animal呢继承了地球,就是说我们的动物呢,生活在地球上啊,动物呢,它有一,它有一个叫,叫上的一个声音叫animal上,那么bird呢又继承了animal,就是鸟呢,是一种动物,这又发出鸟叫的声音。好的,那继承关系大家看到bird是最上面的,Animal是它的子类,Bird呢,又是animal的子类,这个关系很清晰。
01:01
现在呢,我这里写了一个这样的东西,写了一个函数啊,那么这个函数呢,我这里用了一个什么呀,上界怎么理解这个上界呢?就是你传入的这个T的这个类型,需要是animal的之类,当然也可以是animal,就有点类似于小于等于的这种感觉啊,小于等于这种感觉,那么这里呢,我可以接收一个sequence,这个sequence是个序列。而里面这个泛型是TT是谁呀?T就是这个T。就你这个类型和这个类型要保持什么呀。就一致啊一致,然后这里面呢,这个things拿到以后,我调用了map。大家看啊,这个map呢,我们以前都加了个点儿,其实不加底也可以。啊,这个地方是可以的,比如说我来举一个简单例子,就是以前我们写的结合着map什么什么点map,其实不要这个map也行,那这个下划线表示什么意思呢,同学们。
02:02
我找一个同学说一下这个下划线表示什么意思。这个下划线你们现在能能一眼看出来是什么意思吗?是不是这个下划线是代表从这个since这个集合里边取出来的一个一个的对象啊,这个要看得懂了啊,后面这种代码很多的。很多的。待会儿呢,我再可能还需要啊,我需要这个五到十分钟给大家评讲一个那个题你们都做出来了吗?就那个统计单词有多少个进并排序呢,你们做出来了吗?是不是有些同学做出来,有些同学没做出来呀,就是我们在讲集合的时候,我留了一个特别经典的题。对,班长做出来了吗?一点迷茫的样子,对不对?待会我给你,我跟大家评讲一下,那个题还是很有价值的,那个题里面就大量用到这种方法,我们会花五到十分钟把那个题评讲啊,既然我讲我说了要评价那个题,我就要评讲的。那么这个地方大家要看懂,这个下划线代表的是从这个S里面电离出来的一个一个的对象,好,现在我们来看这哪里,请看第一个题。
03:11
我这个地方传入了一个sequence序列,里面传了两只鸟。传了两只鸟。那么这个传两只鸟鸟鸟呢,传进去过这个肾进行这个map,请问这边输出什么呀?是是不是应该输出两声鸟叫啊,Birds上bird上对不对,正确的,因为为什么?因为我这个鸟的确是animal的子类。所以这个是OK的两声鸟叫。那么又传了一个C控制,传了两个animal,哎,问同学们。是不是两个animal就传进去了,所以你看这个泛型威力还是很大的,它可以它可以就是说它不但可以。可以,这个通用,而且它还可以传不同,你看一个两个animal同时传进去,这是两声动物交换,也是OK的,你看我甚至可以传一个animal,再传一个bird,如果你没有这个下上界这个概念,你其实很难做到这一点。
04:08
那又传一个animal,又传一个bird,这个也是OK的,它会发出什么叫声呢?一个animal的叫声,一个bird声音,那同学们看,这个我能传进去吗?二。二是这个animal的父类。那么你的父类是安利的子类吗?显然这个是不成立的。这个就会。报错报错,好同学们,那现在呢,我们把这段代码给大家运行一下,这个代码呢,我就直接拿来跑一下啊,注意同学们加深对它的理解,现在。我来把刚才讲的这段代码给各位同学跑一下。注意听讲啊,今天今天的信息量会比较大一点。Upper bouns demo02 OK,那写一个object对吧?好,我把刚才这个代码呢拿过来复制一下。
05:04
R复,呃,这边叫lower Bo STEM,呃,也可以吧,也给它这个名称呢,不一样,它也不会错,所以这个地方,这个scanner在这块还是挺有意思的啊,我们刚才说了,这是两声鸟叫。这个是OK的,对。这个呢也是对的,两生动物的交换生。这个也是对的啊,为什么呢?因为一生动物叫叫生一生。鸟叫这个就不对了,说老师这没报错呀。没报错并不代表他不报错,因为这一个编译器啊,他看到是一个序列,它有它在底层就没有再进行这个验证了,说这个地方呢,他虽然没报错,但实际上这是错的。啊,这个是错的,那么我们先来跑一下,先把这个关闭一下,我们看是不是跟我们分析的一样。
06:00
好,这个地方为了好看呢,我把这个打给L好同学们看啊,现在呢,应该是发出正确的叫声。好,前世两声鸟叫。动物叫,然后一个动物叫声,一个鸟叫,正确的,当我们把这个打开,我们看看情况如何,这两个地球。跑进去运行。这个时候我们的这个上界就发挥作用了,看这里,他说我们的第八一行及这一行。干什么呢?他说。你这个直接看这有啊。Do not confirm不能转成这个参数,就是它跟你的这个匹配。匹配不上,匹配不到animal这个之类,因此他直接告诉你什么呢?Type Miss match,匹配不上就错了。好,这个就是体会了一下什么呢,这面就报错,因为原因说一下,因为二是ERTH不是animal的子类。
07:03
好,这就体现出他的一个上界啊,现在上界的案例,好,这个呢,我们就说到这。好上进。它的一个实际的一个案例,那关于上届呢案例,我们就先给同学们,案例就说到这儿啊,我们把这个题给大家往这儿放一份。好,我们讲了一个关于他的上届的案例,对不对?好给同学们写一下,诶,给同写一下来吧。这是我们的又一个案例,把代码呢给同学们放到这。想不起来,就把这个代码看一下,我这写的错的啊,这是错的,所以说我把它注销一下。好的,我把它放到这里来。放到这一栏。好,同学们,放完这个呢,我们截取一段。
我来说两句