Java 8 Stream API : Filter on instance, 和 cast

标签 java java-8

<分区>

我有一个对象列表:

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())

关于Java 8 Stream API : Filter on instance, 和 cast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34879086/

相关文章:

java - 我的 JButton 操作监听器不工作

java - 如何使用相同的逻辑替换两个文件中出现的相同 'stem' 数字?

java - XWPFRun.setText() 似乎不尊重换行符或制表符?

java - 我应该尽可能使用并行流吗?

java - 如何将 Java 8 Stream 转换为二维数组?

java - 使用 Java 8 时钟对类进行单元测试

java - 为什么顺序流和并行流的归约结果不同?

java - 如何将我的第一个程序提交到SPOJ平台?为什么我收到超出时间限制或运行时错误 NZEC?

java - 在解析数组时如何将数组中的对象作为方法的参数?

java - 了解 lambda 和/或谓词