Java 泛型的类型擦除到底是什么
泛型让集合和方法在编译期就能检查类型,减少运行时的强制转换错误。但 Java 泛型是通过类型擦除实现的,运行时并不会保留完整的泛型类型。
泛型解决了什么问题
没有泛型时,集合里什么都能放:
List list = new ArrayList(); |
使用泛型后,编译期就能发现问题:
List<String> list = new ArrayList<>(); |
类型擦除的影响
运行时 List<String> 和 List<Integer> 都会被擦除成 List。所以不能这样判断:
// 编译不通过 |