使用泛型可确保类型安全,避免ClassCastException。1. 声明时指定类型如List;2. 编译期检查、无需强转、防止错误插入;3. 可自定义泛型类如Box;4. 注意类型擦除、不能创建泛型数组、用包装类替代基本类型。

在Java中使用泛型定义集合类型,可以确保类型安全,避免运行时的ClassCastException异常,并减少强制类型转换的需要。泛型通过在声明集合时指定元素的具体类型来实现这一点。
1. 声明带泛型的集合
在定义集合变量时,使用尖括号指定集合中存储的元素类型。
-
List
names = new ArrayList(); :只允许存放字符串 -
Set
numbers = new HashSet(); :只能存储整数 -
Map
userMap = new HashMap(); :键为字符串,值为User对象
2. 泛型的好处
使用泛型后,编译器会在编译期检查类型是否匹配,从而提升代码可靠性。
- 无需手动强转:从集合取出元素时已经是正确类型
- 防止错误类型插入:比如不能向List
中添加Integer - 提高代码可读性:明确知道集合中存放的是什么类型的数据
3. 自定义泛型类或方法(进阶用法)
如果需要编写通用的数据结构或工具方法,也可以定义泛型类或方法。
立即学习“Java免费学习笔记(深入)”;
例如:
public class Boxprivate T value;
public void set(T value) {
this.value = value;
}
public T get() {
return value;
}
}
使用时:Box
4. 注意事项
泛型只在编译期有效,运行时会被擦除(类型擦除),所以无法通过反射获取实际类型参数。
- 不能创建泛型数组,如new T[10]
- 基本类型不能作为泛型参数,需使用包装类(如Integer、Boolean)
- 建议始终使用泛型,即使暂时不确定类型,也应使用通配符?并加以限制
基本上就这些。只要在声明集合时加上










