爲什麼下面的代碼片段不能編譯?具有通用集合的instanceof
if (mangoList instanceof List<Mango>) { System.out.println("true"); }
- 你不知道mangoList是一個列表類型。
- instanceof關鍵字只適用於原始類型。
- 您只能使用反射來檢查集合的類型。
- 通用類型在運行前擦除(ans)
- 該語句可能會導致mangoList被設置爲List的實例。
你認爲哪一個答案是正確的?
爲什麼下面的代碼片段不能編譯?具有通用集合的instanceof
if (mangoList instanceof List<Mango>) { System.out.println("true"); }
你認爲哪一個答案是正確的?
正確答案是您標記爲ans
的那個。您將能夠知道mangoList
是List
,但是您將無法獲得其擦除參數的類型。重新選擇是沒有道理的。
太棒了,是啊,這是我猜測..謝謝你的快速答案 – 2012-07-16 00:15:34
但是,您可以使用mangoList instanceof List來檢查它是否是某種類型的List。例如,如果您不確定是否有List或Mango對象,這很有用,但不能區分不同類型的列表。爲此,我建議您檢查第一個元素的類型。
1.是「泛型類型在運行期間被擦除」。
2.所以你不能告訴列表的類型。
3.但是您將會認識到mangoList是一個List。
哪個_you_認爲是正確答案?爲什麼? – Bernard 2012-07-16 00:44:01