Java 泛型核心机制与实战指南
Java 泛型(Generics)是 Java SE 5 引入的重要特性,它允许我们在编译期进行类型检查,从而提升代码的安全性和复用性。理解泛型的底层原理和正确使用方式,对于编写健壮的集合类代码至关重要。
泛型类定义
泛型类的语法结构相对直观,通过在类名后添加尖括号包裹的类型形参列表来声明。
class ClassName<T1, T2, ..., Tn> {
// 这里可以使用类型参数
}
如果泛型类需要继承其他类,可以在 extends 子句中指定父类的泛型参数:
class ClassName<T1, T2, ..., Tn> extends ParentClass<T1> {
// 可以只使用部分类型参数
}
在实际使用中,我们通常通过实例化时指定具体的类型实参来创建对象。JDK 7 之后支持菱形操作符 <>,编译器会根据上下文自动推断类型。
class MyArray<T> {
public Object[] array = new Object[10];
public void set(int pos, T val) {
array[pos] = val;
}
public T get(int pos) {
return (T) array[pos];
}
public Object[] getArray() {
return array;
}
}
public class Test {
public static void main(String[] args) {
MyArray<String> myArray = new MyArray<>();
}
}
类型边界约束
有时我们需要对传入的类型变量做限制,比如要求类型必须实现某个接口或继承某个类。这可以通过类型边界(Type Bounds)来实现。


