小编jer*_*zek的帖子

java 8 findFirst vs map on optional

鉴于此代码:

class Foo {
  Integer attr;
  public Integer getAttr() {return attr;}
}

List<Foo> list = new ArrayList<>();
list.add(new Foo());

list.stream().map(Foo::getAttr).findAny().orElse(null);  //A
list.stream().findAny().map(Foo::getAttr).orElse(null);  //B
Run Code Online (Sandbox Code Playgroud)

A线投掷

java.lang.NullPointerException:null

而B行返回null.

这种行为的原因是什么?无论findAny()map()回报Optional<T>.

java nullpointerexception optional java-8 java-stream

5
推荐指数
2
解决办法
2361
查看次数