【发布时间】:2016-04-25 01:29:06
【问题描述】:
我有一个对象列表:
List<SomeType> myList;
我想获取此列表中可用的子类型列表:
List<SomeChildType> myChildList = myList.stream().filter(e -> e instanceof SomeChildType).collect(??????)
我不知道如何收集才能获得正确的列表类型。
【问题讨论】:
我有一个对象列表:
List<SomeType> myList;
我想获取此列表中可用的子类型列表:
List<SomeChildType> myChildList = myList.stream().filter(e -> e instanceof SomeChildType).collect(??????)
我不知道如何收集才能获得正确的列表类型。
【问题讨论】:
你需要投射物体:
List<SomeChildType> myChildList = myList.stream()
.filter(SomeChildType.class::isInstance)
.map(SomeChildType.class::cast)
.collect(toList())
【讨论】:
.filter(e -> e instanceof SomeChildType).map(e -> (SomeChildType)e) 或 .filter(SomeChildType.class::isInstance).map(SomeChildType.class::cast)
Class::isInstance - 谢谢。
.map(SomeChildType.class::cast) 对我不起作用。像.filter() 这样的任何进一步的流函数都希望我再次转换该项目,如果不是,编译器会告诉我找不到符号
toList 的静态导入?