Java8流API:实例上的过滤器和强制转换
我有一个对象列表:Java8流API:实例上的过滤器和强制转换,java,java-8,Java,Java 8,我有一个对象列表: List<SomeType> myList; 列出myList; 我想获得此列表中可用的子类型列表: List<SomeChildType> myChildList = myList.stream().filter(e -> e instanceof SomeChildType).collect(??????) List myChildList=myList.stream().filter(e->e SomeChildType的实例)。收集
List<SomeType> myList;
列出myList;
我想获得此列表中可用的子类型列表:
List<SomeChildType> myChildList = myList.stream().filter(e -> e instanceof SomeChildType).collect(??????)
List myChildList=myList.stream().filter(e->e SomeChildType的实例)。收集(???)
我不知道如何收集以获得正确的列表类型。您需要强制转换对象:
List<SomeChildType> myChildList = myList.stream()
.filter(SomeChildType.class::isInstance)
.map(SomeChildType.class::cast)
.collect(toList())
List myChildList=myList.stream()
.filter(SomeChildType.class::isInstance)
.map(SomeChildType.class::cast)
.collect(toList())
我建议采用一致的风格。.filter(e->e SomeChildType的instanceof SomeChildType).map(e->(SomeChildType)e)
或.filter(SomeChildType.class::isInstance).map(SomeChildType.class::cast)
@Holger我没有想到过class::isInstance
-谢谢。.map(SomeChildType.class::cast)
对我不起作用。任何进一步的流函数,如.filter()
,都希望我再次强制转换该项,否则编译器会告诉我符号无法转换found@xetra11它编译得很好:-您是否为toList
包含了静态导入?这太酷了!相关的:相关的: