一、什么是泛型?
Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
泛型的类型擦除
泛型只在编译阶段有效,泛型类型在逻辑上可看成是多个不同的类型,但是其实质都是同一个数据类型,编译之后程序会采取去泛型化的措施。
二、通配符
2.1 无边界通配符
<?>
可以接受任意类型。
2.2 上边界通配符
<? extends Number>
必须为Number及其子类,如Integer、Long等。
2.3 下边界通配符
<? super Number>
表示类型只能接受 Number 及其上层父类类型,如 Object 类型的实例。
三、泛型的具体使用
1. 泛型类
泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分。
public class Box<T> {
.........
}
2. 泛型接口
public interface Box<T> {
T getBox(T a);
}
3. 泛型方法
public class Box<T> {
public T getBox(T a) {
return a;
}
}