在说泛型之前,我们看看下图的小例子(编译时无问题,执行时报错)
出现上图所示问题的原因就是:当我们将一个对象放入集合中,集合不会记住此对象的类型,当再次从集合中取出此对象时,该对象的编译类型变成了Object类型,但其运行时类型任然为其本身类型。(更通俗来说就是向ArrayList中添加了String类型和Integer类型,但是在使用的时候却都是按照String类型使用,类型强转错误)
泛型:
Java 泛型是JDK5中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说为所操作的数据类型被指定为一个参数。
泛型的优点:1编译时即可看到异常 2省去了类型转换时的消耗
泛型的应用方式:
泛型类:
泛型方法:
泛型接口:
泛型在比较器中的使用:
泛型通配符:
当操作类型时,不需要使用类型的具体功能时,只使用Object类中的功能。那么可以用 ? 通配符来表未知类型。此处 ? 是类型实参,而不是类型形参(和Number、String、Integer一样都是一种实际的类型)
泛型通配符上下限:
extends e 允许接收e类型和e的子类
super e 允许接收e类型和e类型的父类
网友评论