Java 泛型(Generics)是 Java 5 引入的重要特性,允许在类、接口和方法中使用类型参数,从而实现更灵活、安全的代码。以下是核心内容:
1. 泛型的基本概念
泛型通过参数化类型实现类型安全,避免强制类型转换。例如:
List<String> list = new ArrayList<String>();
String
是类型参数,确保列表只存储字符串。- 泛型在编译时检查类型,运行时无类型信息(类型擦除)。
2. 泛型类与接口
定义泛型类:
public class Box<T> {
private T item;
public void setItem(T item) { this.item = item; }
public T getItem() { return item; }
}
使用示例:
Box<Integer> intBox = new Box<>();
intBox.setItem(100);
System.out.println(intBox.getItem()); // 输出 100
定义泛型接口:
public interface Container<T> {
T get();
void set(T item);
}
3. 泛型方法
泛型方法可以定义在普通类中,无需泛型类:
public class Utility {
public static <T> T findMax(T a, T b) {
return a.compareTo(b) > 0 ? a : b;
}
}
使用示例:
String max = Utility.findMax("apple", "banana");
System.out.println(max); // 输出 banana
4. 通配符与类型边界
- 通配符
?
用于表示未知类型:void printList(List<? extends Number> list) { for (Number num : list) { System.out.println(num); } }
- 类型边界(Bounded Types)限制泛型类型范围:
public class Box<T extends Comparable<T>> { // 实现比较逻辑 }
5. 泛型的实际应用
- 集合框架(如
List<T>
、Map<K,V>
):确保数据类型一致性。 - 自定义数据结构:如链表、队列等。
- 减少类型转换:避免
ClassCastException
。
扩展阅读
- Java 泛型原理详解:深入理解类型擦除与泛型实现机制。
- Java 集合框架教程:学习如何高效使用泛型集合。