2011-06-09 43 views

回答

8

沒有區別通配符在編譯時刪除

3

根據this博客的答案是「他們是完全一樣的」:

作爲javac的禁止的instanceof表達式,其目標類型是一個通用的類型;對於石膏,編譯器稍微寬鬆,因爲強制類型泛型類型被允許,但會發出警告(見上文)。無論如何,原始類型應該由一個無界通配符被替換,因爲它們具有類似的性質w.r.t.子類型。

Object o = new ArrayList<String>(); 
List<?> list_string = (List)o; //same as (List<?>)o 
boolean b = o instanceof List; //same as o instanceof List<?> 
相關問題