簡體   English   中英

“instanceof List”和'o instanceof List的區別<!--?--> "

[英]The difference between “instanceof List” and 'o instanceof List<?>"

我看不出以下有任何區別:

    Object o = new LinkedList<Long>();

    System.out.println(o instanceof List); 
    System.out.println(o instanceof List<?>);

當不能使用instanceof List時, instanceof List<?>是否有任何實際用途,反之亦然?

沒有不同。 通配符在編譯時被刪除。

根據博客,答案是“它們完全相同”:

由於 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<?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM