Java的泛型实际上是一个语法糖,也就是运行的过程中 泛型数组实际上 的类型仍然是 Object ,这时候使用 List<String>.instanceof(List<Integer>)得到的结果是相同的。
- 在类型检查的过程中利用泛型的信息确保泛型的正确性;
- 在编译的过程中,泛型数组中的类型都是 Object , 将泛型的具体类型转换成强制转换之后的类型;
例如:
初始代码:
List<String> stringList = new ArrayList<>();
stringList.add("Hello");
// stringList.add(123); // 这行在编译时就会报错,类型不匹配
String message = stringList.get(0);
编译之后:
// 泛型信息 <String> 被擦除了
List stringList = new ArrayList();
stringList.add("Hello");
// stringList.add(123); // 如果没有泛型,这行在编译时不会报错
// 编译器在get的时候自动添加了强制类型转换
String message = (String) stringList.get(0);
评论(0)
暂无评论