上一讲我们学了 HashMap 的底层原理,贯穿始终的 `Map<String, Integer>` 中那对尖括号,你也许注意到了,但从未深究过——它们到底是什么?为什么不写 `<String, Integer>` 编译器就会警告?这一讲的主角就是它们:**泛型(Generics)**。 泛型是 Java 5 引入的重要特性,目的只有一个:让代码在编译期就发现类型错误,而不是等到运行时才爆出 `ClassCastException`。理解泛型不仅能让你读懂集合框架的 API,更能帮你写出更安全、更通用的工具类。 ## 为什么需要泛型 先看没有泛型时的世界。 Java 5 之前,集合类存…