簡體   English   中英

如何轉換ArrayList <subClass> 到ArrayList <super> 在java中

[英]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.

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