Java 1.5(Tiger)发行版本增加了泛型(generic)。在没有增加generic之前,从集合中读取到的每一个对象都必须进行类型转换。如果有人不小心向集合里插入了类型错误的对象,那么在编译期不会出现任何错误提示,在运行期就会出现ClassCastException。有了generic后,可以告诉编译器每个集合接受哪些对象类型,编译器会自动地为你的插入进行转化,并在编译是告知你是否插入了类型错误的对象,同时从集合从读到的对象也不用进行类型转换了。
1.什么是泛型?
声明中具有一个或者多个类型参数(type parameter)的类或者接口,就是泛型类或接口。 泛型类和接口统称泛型(generic type)。格式如下:
//构成格式为:类或接口的名称<形式类型参数或实际类型参数> List<E> //读作”E的列表“ List<String> //读作”字符串列表“
2.泛型的各种形式
Set<Object> <!-- 参数化类型,表示可以包含任何对象类型的集合。--> Set<?> <!-- 表示一个无界的通配符类型,表示只能包含某种未知对象类型的集合。--> Set<? extends T> <!-- 表示一个有界的通配符类型,表示只能包含T或T的子类对象类型的集合。--> Set<? super T> <!-- 表示一个有界的通配符类型,表示只能包含T或T的父类对象类型的集合。--> Set <!-- 表示一个原生态类型。-->
3.补充
在java5以后的代码中不建议使用原生态类型。原生态类型只是为了与引入泛型之前的遗留代码进行兼容
和互用而提供的(原理是泛型的类型擦除[Type erasure])。原生态类型失去了泛型在安全性和表述性方面所有优势。
4.注意
泛型不支持子类型。但是任何泛型类都是其对应的原生态类型的一个子类型。
List<Long> list = new ArrayList<Long>(); list.add(Long.valueOf(1)); list.add(Long.valueOf(2)); List<Number> numbers = list; // this will not compile numbers.add(Double.valueOf(3.14)); List rawList = list; //compiled
参考文当:http://www8.cs.umu.se/kurser/tdbb24/HT05/jem/download/generics-tutorial.pdf
相关推荐
全面总结Java泛型--实例
Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力...
【Java基础】泛型方法 - 右撇子 - 博客频道 - CSDN.NET
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...
补充知识:泛型1---马克-to-win java视频的详细描述与介绍
个人制作且上课使用的课件,希望对大家初步了解泛型相关内容有一定的帮助。个人制作且上课使用的课件,希望对大家初步了解泛型相关内容有一定的帮助。
Delphi泛型库--DGL(The Delphi Generic Library) 在Delphi中实现的类型安全、高效、易用的泛型容器和算法库;借鉴了C++标准中的STL;
泛型应用--图的深度(广度)优先遍历.成语接龙例
Java泛型编程指南.pdf 此文章译自SUN的泛型编程指南
补充知识2 ---马克-to-win java视频泛型的详细描述与介绍
Java Generics and Collections 英文版,详细描述java 泛型技术
day02【Collection、泛型】-笔记.md
java泛型源码Java泛型用法 步骤1 原始类型有问题。 第2步 使用泛型类型。 第三步 车库和车辆。 原始类型。 第四步 首先尝试生成车库。 木星在我的车库里。 第5步 泛型上限。 第6步 TripleGarage 步骤7 试图使用泛型...
1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1....
《数学与泛型编程-高效编程的奥秘》个人阅读笔记
Java泛型和集合]-英文版
C++Primer第11章-泛型算法-课后习题答案[收集].pdf
这是一个使用JAVA实现的泛型编程,分为两部分,第一部分创建泛型类,并实例化泛型对象,得出相加结果。 第二部分用户自行输入0--4,选择要进行的加减乘除运算或退出,再输入要进行运算的两个数,并返回运算结果及...
java 泛型接口示例 java 泛型接口示例 java 泛型接口示例