我有一个列表,我需要返回相同类型的列表。
如果相关,在我的情况下,Y是接口,而接口X是其超级接口。
我假设我需要使用newInstance来获取List的类型。
public List<Y> foo() {
List<X> xList = -a method that returns List<X>-;
List<Y> yList = xList.getClass().newInstance(); //Is this right?
...
return yList;
}
我可以创建一个ArrayList,但是我不知道这是否是最好的选择,因为我可以接收任何类型的列表。
最佳答案
您是否要混合使用List的类和其泛型?几乎不需要返回List
的特定实现(例如,如果需要可序列化)。我建议仅使用预先设置了适当大小的ArrayList
。
关于接口,请小心,因为如果Y
扩展X
,则通常无法将xList
中的对象放入yList
中(我想您要这样做),因为可能存在X的列表中的cc>。