我沒有看到在以下任何區別:Ø的instanceof名單<?>「的instanceof名單」和」之間的區別「
Object o = new LinkedList<Long>();
System.out.println(o instanceof List);
System.out.println(o instanceof List<?>);
有中instanceof List<?>
任何實際使用時instanceof List
不能代替?。反之亦然
我沒有看到在以下任何區別:Ø的instanceof名單<?>「的instanceof名單」和」之間的區別「
Object o = new LinkedList<Long>();
System.out.println(o instanceof List);
System.out.println(o instanceof List<?>);
有中instanceof List<?>
任何實際使用時instanceof List
不能代替?。反之亦然
沒有區別通配符在編譯時刪除
根據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<?>
您< >字符沒有露面。 – 2011-06-09 09:04:38