[英]How to convert ArrayList<subClass> to ArrayList<super> in java
我有一個方法setData(ArrayList<super> list)
,所以任何想要設置數據的人都可以擁有自己的實體,只需要從超類擴展即可。 但是當他們調用setData
,他們如何將ArrayList轉換為ArrayList?
現在我使用setData(new ArrayList(list)),但這不是一個好的解決方案。
任何人都可以告訴我如何轉換或其他解決方案可以避免這個問題。 非常感激!
這取決於你之后要對列表做什么。 如果你只是想從中讀取,你可以像這樣聲明你的方法:
setData(ArrayList<? extends SuperType> list)
但是,你不能在該列表中添加任何內容,因為你不知道什么?
是。 另一種選擇是在調用方法時創建副本:
List<SubType> subtypeList = ...;
setData(new ArrayList<SuperType>(subtypeList));
而不是編碼
setData(new ArrayList(list));
你可以簡單地使用
setData((ArrayList<super>)((Object)list));
首先將對象轉換為Object然后再轉換為ArrayList將強制編譯器接受方法調用。 作為額外的獎勵,您不會因創建新陣列列表而遭受性能損失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.