Java 8可选-在此示例中我应该使用它

时间:2019-04-19 11:06:45

标签: java optional

长时间使用Java 7之后,我最终将转换为Java8。我想知道在这种情况下最好的构造是什么:直接进入示例:

class Bar {
    private Foo foo;
    // getters, setters
}

class Foo {
    private String value1;
    private String value2;
    private String value3;
    private String value4;
    // getters, setters
}

检查foo是否不为null并至少填充一个值的最佳选择是什么?

1。

    Optional<Foo> foo = Optional.ofNullable(bar.getFoo());
    if(foo.map(Foo::getValue1).isPresent()
            ||foo.map(Foo::getValue2).isPresent()
            ||foo.map(Foo::getValue3).isPresent()
            ||foo.map(Foo::getValue4).isPresent()){


    }

2。

    Optional<Foo> foo = Optional.ofNullable(bar.getFoo());
    if(foo.filter(foo->foo.getValue1()!=null
    ||foo.getValue2()!=null
    ||foo.getValue3()!=null
    ||foo.getValue4()!=null).isPresent()){

    }
  1. 或仅使用旧的有效nullchecks
    Foo foo1=bar.getFoo();
    if(foo1!=null&&(foo.getValue1()!=null
    ||foo.getValue2()!=null
    ||foo.getValue3()!=null
    ||foo.getValue4()!=null)){

    }

谢谢。

0 个答案:

没有答案