嗨,我正在使用Java Optional。我看到Optional有一个方法ifPresent。
而不是做这样的事情:
Optional<MyObject> object = someMethod();
if(object.isPresent()) {
String myObjectValue = object.get().getValue();
}
我想知道如何使用Optional.ifPresent()将值赋给变量。
我在尝试这样的事情:
String myValue = object.ifPresent(getValue());
我需要什么lambda函数来获取赋值给该变量的值?
很晚但我做了以下:
Optional<MyObject> object = someMethod();
String myValue = object.orElse(new MyObject()).getValue();
你需要做两件事:
Optional<MyObject> object = someMethod();
String myValue = object.orElseThrow(RuntimeException::new).getValue();
变成一个String myValue = object.map(x->x.getValue()).orElse("");
//or null. Whatever you want to return.
,如果原来的Optional有一个值,它就有一个值。您可以使用Optional<MyObject>
:Optional<String>
(或您想要使用的任何其他方法/函数)来执行此操作。map
的String值,否则如果Optional没有值,则返回默认值。为此,您可以使用object.map(MyObject::toString)
结合这些:
Optional<String>
可选l = stream.filter ..... // java 8流条件
orElse
String myValue = object.map(MyObject::toString).orElse(null);
返回一个 if(l!=null) {
ObjectType loc = l.get();
Map.put(loc, null);
}
,但是如果我们添加.findFirst()
它返回可选的if Optional<MyType>
的获取,即(.orElse(null)
),或者其他的isPresent()
MyType