Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]

结论为上:

几乎所有你会以泛型写的程序都与处理集合有关,虽然泛型可以用在其他地方,但它主要目的还是让你能够写出有类型安全性的集合,也就是说,让编译器(这点很重要,是编译器负责检查集合,而数组是由虚拟机检查)能够帮忙防止你把Dog加到Cat群中。

看《Java核心技术卷Ⅰ》关于“泛型程序设计”这一章有没有听到脑仁飞速转动和脑壳的摩擦声,但还是一脸懵逼,不知所云。其实泛型有很多东西要知道,但对于大部分程序员,其实只有4件事重要:

(1)定义泛型类

public class ArrayList<E> extends AbstractList<E> implements List<E> ...
{
public boolean add(E o)
//more code
}

(2)创建被泛型化类 (例如ArrayList)的实例

new ArrayList<Song>()

(3)声明与指定泛型类型的变量

List<Song> songList = new ArrayList<Song>()

(4)声明(与调用)取用泛型类型的方法

void foo(List<Song> list)
{
//codes
}

x.foo(songList)

详述如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
证明数组形式编译和运行都没有问题。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
证明泛型形式编译就报错在这里插入图片描述

下图中的两个关系图说明了固定类型间不存在继承关系(呼应于P574中“类型变量不具有多态性”)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
数组形式(把Cat放到Dog中)证明编译可以通过,但运行时报错在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

参考:《Head First Java 2nd Edition》、《Java核心技术卷Ⅰ》

如果大家喜欢这篇文章的话,希望大家收藏、转发、关注,转载请注明出自这里。 PS:本随笔属个人学习小结,文中内容有参考互联网上的相关文章。如果您博文的链接被我引用,我承诺不会参杂经济利益。其中如果发现文中有不正确的认知或遗漏的地方请评论告知,谢谢! 还是那句话:不是我喜欢copy,是站在巨人的肩膀上~~

猜你喜欢

转载自blog.csdn.net/Mrsgflmx/article/details/107850622
今日推荐