Java 泛型(Generics)是 Java 5 引入的重要特性,允许开发者在编译期实现类型安全的集合操作,避免强制类型转换和运行时异常。通过泛型,可以编写可复用、灵活的代码。

🧩 核心概念

  1. 类型参数
    使用 <T> 等占位符定义泛型类/方法,例如:

    public class Box<T> {
        private T item;
        public void setItem(T item) { this.item = item; }
    }
    
    Java_Generic_Class
  2. 类型擦除
    泛型信息在运行时会被擦除,编译器生成桥接方法确保兼容性。例如:

    List<String> list = new ArrayList<>();
    

    实际运行时类型为 List

  3. 通配符(Wildcards)
    使用 ? 表示不确定的类型,例如:

    void print(List<? extends Number> list) { ... }
    
  4. 泛型方法
    独立于类的泛型方法,例如:

    public static <T> T findMax(List<T> list) { ... }
    

📌 实践技巧

  • 避免原始类型:始终使用泛型代替 ListMap 等原始类型。
  • 边界约束:通过 extendssuper 限制类型范围。
  • 嵌套泛型:支持复杂类型结构,例如 Map<String, List<Integer>>

🧠 拓展阅读

想深入了解 Java 泛型的高级用法?点击这里前往 /java-tutorial/advanced_topics 查看更多内容!