【发布时间】:2016-12-02 16:01:44
【问题描述】:
假设我有一个名为Importable 的接口,它有多个实现,其中一个是ImportableImpl。
我有一个类 Staging 的列表,它有一个泛型类型:Importable。
通过 java 8 流,我想转换列表:
List<Staging<Importable>> list1
到一个列表:
List<Staging<ImportableImpl>> list2
我已经确定列表list1 是Staging<ImportableImpl> 的列表,因此不会出现ClassCastException。
不知道java是否授权这种泛型类型的转换。
我想尝试这样的事情:
list1.stream()
.map(Staging::getImportable) // retrieve generic type
.map(ImportableImpl.class::cast)
.collect(Collectors.toList())
但是有了这个我会得到一个List<ImportableImpl>而不是List<Staging<ImportableImpl>>。
【问题讨论】:
-
如何创建
Staging对象? -
为什么需要这样做?也许您应该在界面中添加更多方法。
标签: java generics java-8 java-stream