我有一个方法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));
ArrayList<? extends super> list
? - Hunter McMillensetData(ArrayList<? extends SuperType> list)
是我想要的。 - dreamtale