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 songList = new ArrayList()

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

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

x.foo(songList)

详述如下:

Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第1张图片
Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第2张图片
Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第3张图片
Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第4张图片

Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第5张图片

Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第6张图片
Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第7张图片
Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第8张图片
Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第9张图片
Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第10张图片
Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第11张图片
证明数组形式编译和运行都没有问题。

Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第12张图片
Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第13张图片
Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第14张图片
证明泛型形式编译就报错Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第15张图片

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

Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第16张图片
Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第17张图片
Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第18张图片
数组形式(把Cat放到Dog中)证明编译可以通过,但运行时报错Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第19张图片
Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第20张图片

Java泛型的作用和引入原因 之 T或许是Tao的简写[嘿嘿]_第21张图片

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

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

你可能感兴趣的:(Java)