Java 泛型的类型擦除到底是什么

Java 泛型的类型擦除到底是什么

泛型让集合和方法在编译期就能检查类型,减少运行时的强制转换错误。但 Java 泛型是通过类型擦除实现的,运行时并不会保留完整的泛型类型。

泛型解决了什么问题

没有泛型时,集合里什么都能放:

List list = new ArrayList();
list.add("hello");
Integer value = (Integer) list.get(0); // 运行时报错

使用泛型后,编译期就能发现问题:

List<String> list = new ArrayList<>();
list.add("hello");
String value = list.get(0);

类型擦除的影响

运行时 List<String>List<Integer> 都会被擦除成 List。所以不能这样判断:

// 编译不通过
if (list instanceof List<String>) {
}

   转载规则


《Java 泛型的类型擦除到底是什么》 小乐 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录