如果存在,则将 Optional 的值分配给变量
Assign value of Optional to a variable if present
您好,我正在使用 Java 可选。我看到 Optional 有一个方法 ifPresent。
而不是像这样做:
Optional<MyObject> object = someMethod();
if(object.isPresent()) {
String myObjectValue = object.get().getValue();
}
我想知道如何使用 Optional.ifPresent() 将值赋给变量。
我正在尝试类似的方法:
String myValue = object.ifPresent(getValue());
我需要什么 lambda 函数来获取分配给该变量的值?
您可以使用 #orElse or orElseThrow 来提高代码的可读性。
Optional<MyObject> object = someMethod();
String myValue = object.orElse(new MyObject()).getValue();
Optional<MyObject> object = someMethod();
String myValue = object.orElseThrow(RuntimeException::new).getValue();
你需要做两件事:
- 将你的
Optional<MyObject>
变成一个 Optional<String>
,它有一个值当且仅当原始 Optional 有一个值。您可以使用 map
:object.map(MyObject::toString)
(或您想要使用的任何其他 method/function)来执行此操作。
- 获取
Optional<String>
的字符串值,否则 return 如果 Optional 没有值,则为默认值。为此,您可以使用 orElse
结合这些:
String myValue = object.map(MyObject::toString).orElse(null);
很晚了,但我做了以下事情:
String myValue = object.map(x->x.getValue()).orElse("");
//or null. Whatever you want to return.
可选 l = stream.filter..... // java 8 流条件
if(l!=null) {
ObjectType loc = l.get();
Map.put(loc, null);
}
.findFirst()
returns一个Optional<MyType>
,但是如果我们加上.orElse(null)
它returns可选ifisPresent()
的get,那是 (MyType
),否则是 NULL
MyType s = newList.stream().filter(d -> d.num == 0).findFirst().orElse(null);
您好,我正在使用 Java 可选。我看到 Optional 有一个方法 ifPresent。
而不是像这样做:
Optional<MyObject> object = someMethod();
if(object.isPresent()) {
String myObjectValue = object.get().getValue();
}
我想知道如何使用 Optional.ifPresent() 将值赋给变量。
我正在尝试类似的方法:
String myValue = object.ifPresent(getValue());
我需要什么 lambda 函数来获取分配给该变量的值?
您可以使用 #orElse or orElseThrow 来提高代码的可读性。
Optional<MyObject> object = someMethod();
String myValue = object.orElse(new MyObject()).getValue();
Optional<MyObject> object = someMethod();
String myValue = object.orElseThrow(RuntimeException::new).getValue();
你需要做两件事:
- 将你的
Optional<MyObject>
变成一个Optional<String>
,它有一个值当且仅当原始 Optional 有一个值。您可以使用map
:object.map(MyObject::toString)
(或您想要使用的任何其他 method/function)来执行此操作。 - 获取
Optional<String>
的字符串值,否则 return 如果 Optional 没有值,则为默认值。为此,您可以使用orElse
结合这些:
String myValue = object.map(MyObject::toString).orElse(null);
很晚了,但我做了以下事情:
String myValue = object.map(x->x.getValue()).orElse("");
//or null. Whatever you want to return.
可选 l = stream.filter..... // java 8 流条件
if(l!=null) {
ObjectType loc = l.get();
Map.put(loc, null);
}
.findFirst()
returns一个Optional<MyType>
,但是如果我们加上.orElse(null)
它returns可选ifisPresent()
的get,那是 (MyType
),否则是 NULL
MyType s = newList.stream().filter(d -> d.num == 0).findFirst().orElse(null);