如何在Java8中筛选包含空引用的元素

如何在Java8中筛选包含空引用的元素,java,java-8,Java,Java 8,因此,目前我正试图将注意力集中在Java8上 我有这个流操作 List<MyObject> parsedEvents = events.stream() .filter(Objects::nonNull) .map( e -> MyObject.builder() .setFoo(e.foo()) .setBar(e.bar()) .setBaz(e.baz()) .build() ).collect(Collectors.toList

因此,目前我正试图将注意力集中在Java8上

我有这个流操作

    List<MyObject> parsedEvents = events.stream()
.filter(Objects::nonNull)
    .map(
         e -> MyObject.builder()
.setFoo(e.foo())
.setBar(e.bar())
.setBaz(e.baz())
.build()
    ).collect(Collectors.toList());
List parsedEvents=events.stream()
.filter(对象::非空)
.地图(
e->MyObject.builder()
.setFoo(e.foo())
.立根杆(e.杆())
.setBaz(e.baz())
.build()
).collect(Collectors.toList());
但是,有时e.foo()可以为Null,e.bar()可以为Null,e.baz()可以为Null

所以,我只想过滤那些任何方法都将返回null的事件

在Java8中,有什么干净的方法可以做到这一点。

试试这个

List<MyObject> parsedEvents = events.stream()
    .filter(Objects::nonNull)
    .filter(e -> Stream.of(e.foo(), e.bar(), e.baz())
        .allMatch(Objects::nonNull))
    .map(
        e -> MyObject.builder()
            .setFoo(e.foo())
            .setBar(e.bar())
            .setBaz(e.baz())
            .build())
    .collect(Collectors.toList());
List parsedEvents=events.stream()
.filter(对象::非空)
.filter(e->Stream.of(e.foo(),e.bar(),e.baz())
.allMatch(对象::非空))
.地图(
e->MyObject.builder()
.setFoo(e.foo())
.立根杆(e.杆())
.setBaz(e.baz())
.build())
.collect(Collectors.toList());

在现有过滤器中添加所需的条件,或者您是否在寻找其他条件?关于标题,它完全是重复的。没有空对象,只有空引用。