稀有名詞解釋——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