稀有名词解释——Java 堆污染(犄角旮旯问题)
有些面试官喜欢问一些稀有名词,彰显其渊博的知识背景。
所谓堆污染,简单的说就是当一个泛型类型变量赋值给不是泛型类型变量,这种错误在编译期间能被编译器警告,但是可以忽略,直到运行时报错。
ArrayList list=new ArrayList<Integer>();
list.add(100);
ArrayList<String> strList=list;
String p=strList.get(0);//运行时出错
System.out.println(p);
复制
Exception in thread “main” java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String………
这又说明了 Java 伪泛型的本质,在 C#中,写不出这种代码。
参考:https://en.wikipedia.org/wiki/Heap_pollution