簡體   English   中英

奇怪的行為,Long的Generic ArrayList

[英]Strange behaviour, Generic ArrayList of Long

我有someMethod()返回Collection<Long>

ArrayList<Long> results = (ArrayList<Long>) someMethod();
Long value = results.get(0);

我得到ClassCastException: java.util.ArrayList cannot be cast to java.lang.Long 試試System.out.println(results.get(0)); 事實上,它返回例如[32] 我不明白這個。 這是Long的ArrayList! 為什么get(0)返回ArrayList

這有助於:

Object o = results.get(0);
ArrayList<Long> al = (ArrayList<Long>) o;
Long val = al.get(0);

但為什么需要呢?

顯然someMethod()實際上是返回Collection<List<Long>> ,違反了聲明的返回類型。 由於類型擦除,這是可能的。 只要類類型正確,編譯器就很高興,可以忽略泛型類型(編譯器只會引發警告)。 基本上這是someMethod()一個錯誤。

暫無
暫無

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

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