如果存在,则为变量赋值 Optional

2022-09-02 02:53:42

嗨,我正在使用Java Optional。我看到可选有一个方法 ifPresent。

而不是做这样的事情:

Optional<MyObject> object = someMethod();
if(object.isPresent()) {
    String myObjectValue = object.get().getValue();
}

我想知道如何使用 Optional.ifPresent() 将值分配给变量。

我正在尝试类似的东西:

String myValue = object.ifPresent(getValue());

我需要 lambda 函数才能获得分配给该变量的值?


答案 1

您可以使用#orElse或elseThrow来提高代码的可读性。

Optional<MyObject> object = someMethod();
String myValue = object.orElse(new MyObject()).getValue();

Optional<MyObject> object = someMethod();
String myValue = object.orElseThrow(RuntimeException::new).getValue();

答案 2

很晚了,但我做了以下事情:

String myValue = object.map(x->x.getValue()).orElse("");
                           //or null. Whatever you want to return.

推荐