`

java 泛型(gemeric)---1

    博客分类:
  • j2se
阅读更多

   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编程语言的一个强大特性,它允许在编译时检查类型安全,并且所有的强制转换都是...

    JAVA-泛型课件-泛型课件

    泛型是Java语言的一个重要特性,首次出现在Java SE 1.5版本中。它的引入主要是为了解决在集合操作中类型安全性的问题,并通过引入参数化类型的概念,提高了代码的复用性与可读性。 ### 泛型概念 泛型,即参数化...

    【Java基础】泛型方法 - 右撇子 - 博客频道 - CSDN.NET

    【Java基础】泛型方法 - 右撇子 - 博客频道 - CSDN.NET

    Generic_2(泛型类-泛型方法-泛型接口-泛型限定(上限)

    泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...

    补充知识:泛型1---马克-to-win java视频

    补充知识:泛型1---马克-to-win java视频的详细描述与介绍

    很好的Java泛型的总结

    Java泛型机制详解 Java泛型是Java语言中的一种机制,用于在编译期检查类型安全。Java泛型的出现解决了Java早期版本中类型安全检查的缺陷。Java泛型的好处是可以在编译期检查类型安全,避免了运行时的...

    java-泛型-面试题.docx

    java-泛型-面试题.docx

    补充知识:泛型2---马克-to-win java视频

    补充知识2 ---马克-to-win java视频泛型的详细描述与介绍

    Delphi泛型库--DGL

    1. **泛型容器:** - **TList**:这是一个动态数组的泛型版本,可以存储指定类型的对象,并提供了添加、删除、查找和排序等操作。 - **TDictionary, TValue&gt;**:作为键值对的容器,TKey用于表示键的类型,TValue...

    day02【Collection、泛型】-笔记.md

    day02【Collection、泛型】-笔记.md

    java泛型源码-Java-Generics-Tutorial:教程的源代码

    java泛型源码Java泛型用法 步骤1 原始类型有问题。 第2步 使用泛型类型。 第三步 车库和车辆。 原始类型。 第四步 首先尝试生成车库。 木星在我的车库里。 第5步 泛型上限。 第6步 TripleGarage 步骤7 试图使用泛型...

    1.java泛型定义.zip

    1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1....

    《数学与泛型编程-高效编程的奥秘》个人阅读笔记

    《数学与泛型编程-高效编程的奥秘》个人阅读笔记

    JAVA泛型加减乘除

    这是一个使用JAVA实现的泛型编程,分为两部分,第一部分创建泛型类,并实例化泛型对象,得出相加结果。 第二部分用户自行输入0--4,选择要进行的加减乘除运算或退出,再输入要进行运算的两个数,并返回运算结果及...

    Java泛型的用法及T.class的获取过程解析

    1. 泛化:泛型可以拿个T代表任意类型,提高代码的灵活性和可读性。 2. 泛型 + 反射:泛型可以与反射结合使用,通过反射的API来获取T的Class。 3. 收敛:泛型可以增加类型安全,减少了强制类型转换的代码。 4. ...

Global site tag (gtag.js) - Google Analytics