chr*_*003 11 java lambda optional
嗨,我正在使用Java Optional.我看到Optional有一个方法ifPresent.
而不是做这样的事情:
Optional<MyObject> object = someMethod();
if(object.isPresent()) {
String myObjectValue = object.get().getValue();
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何使用Optional.ifPresent()将值赋给变量.
我在尝试这样的事情:
String myValue = object.ifPresent(getValue());
Run Code Online (Sandbox Code Playgroud)
我需要什么lambda函数来获取赋值给该变量的值?
Com*_*nte 10
您可以使用#orElse或orElseThrow来提高代码的可读性.
Optional<MyObject> object = someMethod();
String myValue = object.orElse(new MyObject()).getValue();
Run Code Online (Sandbox Code Playgroud)
Optional<MyObject> object = someMethod();
String myValue = object.orElseThrow(RuntimeException::new).getValue();
Run Code Online (Sandbox Code Playgroud)
Opt*_*nal 10
很晚但我做了以下:
String myValue = object.map(x->x.getValue()).orElse("");
//or null. Whatever you want to return.
Run Code Online (Sandbox Code Playgroud)
你需要做两件事:
Optional<MyObject>变成一个Optional<String>,如果原来的Optional有一个值,它就有一个值.您可以使用map:( object.map(MyObject::toString)或您想要使用的任何其他方法/功能)来执行此操作.Optional<String>,否则如果Optional没有值,则返回默认值.为此,你可以使用orElse结合这些:
String myValue = object.map(MyObject::toString).orElse(null);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27356 次 |
| 最近记录: |