使用 Java 泛型(Generics) 主要是为了解决在编写通用代码时的类型安全、代码复用和可读性等问题。下面从几个关键角度说明“为什么要使用 Java 泛型”。
在泛型出现之前,集合类(如 ArrayList)只能存 Object:
List list = new ArrayList();
list.add("hello");
list.add(123);
String s = (String) list.get(1); // 运行时会抛 ClassCastException
问题:
使用泛型后:
List<String> list = new ArrayList<>();
list.add("hello");
// list.add(123); // 编译报错
✅ 错误在编译阶段就被发现,减少运行时异常。
没有泛型:
String s = (String) list.get(0);
有泛型:
String s = list.get(0);
✅ 代码更简洁、可读性更好。
泛型让方法或类可以适用于多种类型,而不需要为每种类型写一份代码。
例如泛型方法:
public static <T> T getFirst(List<T> list) {
return list.get(0);
}
可以用于:
getFirst(new ArrayList<String>());
getFirst(new ArrayList<Integer>());
✅ 一份代码,多种类型通用。
看到泛型声明,就能明确知道集合中存放的是什么类型:
Map<String, List<Integer>> map;
比:
Map map;
✅ 一眼就知道数据结构,降低维护成本。
Java 的集合框架大量依赖泛型:
List<T>Map<K, V>Comparator<T>Stream<T>如果没有泛型:
注意:
List<String> 和 List<Integer>
运行时都是 List
所以泛型不能用于:
new T()
instanceof T
使用 Java 泛型,是为了在编写通用代码的同时,保证类型安全、减少强制转换、提高代码复用性和可读性。
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。