泛型
Java 泛型详解:类型安全的基石
泛型(Generics)是 Java 5 引入的核心特性,它允许在定义类、接口和方法时使用类型参数,从而实现代码的类型安全和复用性。在泛型出现之前,集合类只能存储 Object 类型,取出时必须强制转换,容易引发运行时 ClassCastException。泛型的出现将类型检查提前到编译期,从根本上解决了这一问题。
泛型的核心价值
- 编译期类型检查:阻止将错误类型的对象放入集合,避免运行时类型转换异常。
- 消除强制类型转换:从集合中获取元素时无需手动转换,代码更简洁。
- 代码复用:一套泛型代码可适配多种数据类型(如
ArrayList<String>、ArrayList<Integer>共享同一套ArrayList实现)。 - 提升可读性:通过类型参数明确集合或方法支持的数据类型,代码意图更清晰。
泛型的基本用法
泛型类与泛型接口
泛型类 / 接口在定义时声明类型变量(用 <T> 表示),使用时指定具体类型。
示例:自定义泛型类
// 定义泛型类,T为类型变量(可替换为任意标识符,通常用T、E、K、V等)
public class Box<T> {
private T value; // 使用类型变量作为属性类型
public Box(T value) { // 作为构造器参数类型
this.value = value;
}
public T getValue() { // 作为返回值类型
return value;
}
public void setValue(T value) { // 作为方法参数类型
this.value = value;
}
}
// 使用泛型类:指定具体类型(如String、Integer)
public class BoxDemo {
public static void main(String[] args) {
Box<String> stringBox = new Box<>("Hello");
String str = stringBox.getValue(); // 无需强制转换
Box<Integer> intBox = new Box<>(123);
int num = intBox.getValue(); // 自动拆箱
}
}

