我有一个方法setData(ArrayList<super> list)
,所以任何想要设置数据的人都可以拥有自己的实体,只需要从超类扩展.但是当他们调用时,他们setData
如何将ArrayList转换为ArrayList?
现在我使用setData(new ArrayList(list)),但这不是一个好的解决方案.
任何人都可以告诉我如何转换或其他解决方案可以避免这个问题.非常感激!
van*_*nza 17
这取决于你之后要对列表做什么.如果你只是想从中读取,你可以像这样声明你的方法:
setData(ArrayList<? extends SuperType> list)
Run Code Online (Sandbox Code Playgroud)
但是,您无法在该列表中添加任何内容,因为您不知道它是什么?
.另一种选择是在调用方法时创建副本:
List<SubType> subtypeList = ...;
setData(new ArrayList<SuperType>(subtypeList));
Run Code Online (Sandbox Code Playgroud)