簡體   English   中英

未經檢查的演員:在這種情況下,有沒有辦法避免這種情況?

[英]Unchecked cast: Is there a way to avoid it in this case?

我有一種情況導致了未經檢查的投射警告。 我知道我可以使用強制警告,但是我的直覺告訴我,有一種方法可以通過更改代碼段的編碼方式來避免這種情況。 但是,我似乎無法解決該問題,並且可以換一組新的眼睛。

//function removes elements from input, orders them and re-adds them
private <E extends Bus> int orderBuses(ArrayList<E> busList) {

  Bus busToAdd = null;

  ...

  busList.add((E) busToAdd);

  return 0;
}

用幾個列表調用該函數,每個列表包含擴展Bus的類。 在BusToAdd上使用了Bus的一部分功能,因此使用E型將無法正常工作。

關於如何在不抑制警告的情況下進行重組的任何建議?

編輯:發現我可以將E用於busList,但是最終不得不轉換我分配給它的總線,從而導致同樣的警告。 我可以嘗試使用E代替總線來使用所有功能,我將在測試后進行更新。

為什么在這里不能使用E

您說您正在使用Bus一部分方法,但是由於E extends Bus您也應該能夠在E上調用所有Bus的方法。

您應該能夠在方法主體中用E替換對Bus類型的引用。 這樣就不會發出警告。

例:

E busToAdd = busList.get(0);
// ...
busList.add(busToAdd);

暫無
暫無

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

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