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泛型的概念,并通过具体示例来展示其应用。Java泛型是Java编程语言的一个强大特性,它允许在编译时检查类型安全,并且所有的强制转换都是...
泛型是Java语言的一个重要特性,首次出现在Java SE 1.5版本中。它的引入主要是为了解决在集合操作中类型安全性的问题,并通过引入参数化类型的概念,提高了代码的复用性与可读性。 ### 泛型概念 泛型,即参数化...
【Java基础】泛型方法 - 右撇子 - 博客频道 - CSDN.NET
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...
补充知识:泛型1---马克-to-win java视频的详细描述与介绍
Java泛型机制详解 Java泛型是Java语言中的一种机制,用于在编译期检查类型安全。Java泛型的出现解决了Java早期版本中类型安全检查的缺陷。Java泛型的好处是可以在编译期检查类型安全,避免了运行时的...
java-泛型-面试题.docx
补充知识2 ---马克-to-win java视频泛型的详细描述与介绍
1. **泛型容器:** - **TList**:这是一个动态数组的泛型版本,可以存储指定类型的对象,并提供了添加、删除、查找和排序等操作。 - **TDictionary, TValue>**:作为键值对的容器,TKey用于表示键的类型,TValue...
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实现的泛型编程,分为两部分,第一部分创建泛型类,并实例化泛型对象,得出相加结果。 第二部分用户自行输入0--4,选择要进行的加减乘除运算或退出,再输入要进行运算的两个数,并返回运算结果及...
1. 泛化:泛型可以拿个T代表任意类型,提高代码的灵活性和可读性。 2. 泛型 + 反射:泛型可以与反射结合使用,通过反射的API来获取T的Class。 3. 收敛:泛型可以增加类型安全,减少了强制类型转换的代码。 4. ...