我有一个List<MyClass>
。我碰巧知道该列表中的每个对象都是MySubClass
的实例,该实例扩展了MyClass
。我的问题是将List<MyClass>
转换为List<MySubClass>
的最佳方法是什么。我当前的解决方案是:
List<MySubclass> subList = new ArrayList<>();
for (MyClass o : list) {
subList.add((MySubClass) o);
}
这会引发未经检查的强制转换警告,但是可以,因为正如我所说,可以确定每个对象都是可转换的。我想知道是否有更好的方法可以做到这一点?不幸的是,由于我无法控制界面,因此无法更改原始list
的类型。
我想用lambda做到这一点,但是除了使用map
或mapToInt
之外,我找不到让mapToDouble
返回其他类型的列表的方法或者其他的东西。显然没有mapToMySubClass
,而且我找不到通用的mapToType<T>
。