天天看點

稀有名詞解釋——Java 堆污染(犄角旮旯問題)稀有名詞解釋——Java 堆污染(犄角旮旯問題)

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