[英]How can i do an instanceof check on a generics type list?
我正在編寫一個方法,可以采用不同的3個不同對象列表,每個對象都擴展相同的超類。 方法簽名如下所示:
private void writeObjectToCsv(File file, List<? extends ZohoData> rawDataView)
我需要知道哪個列表已作為參數傳遞,所以我想使用instanceof檢查,如下所示:
if (rawDataView instanceof List<ZohoChatData>)
但是,這給了我一個錯誤,上面寫着“非法泛型類型”(ZohoChatData在IDE中標記為紅色)。 ZohoChatdata擴展了ZohoData,所以我不明白為什么編譯器會給我這個錯誤。 有人知道嗎?
謝謝。
我過去遇到過這個問題,並找到了兩種可能的解決方法:
此外,您可以將類型檢查移動到完全處理/使用項目的部分。 這也將消除這個問題。
問候,
SEM
泛型僅用於編譯時,類型將在編譯后被擦除,並且在運行時將不再存在。 instanceof用於檢查對象的類型。 所以你不能在像List這樣的Generic類中使用instanceof。 要確定列表包含哪種類型的對象,gem所解釋的方式就足夠了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.