[英]Assign value of Optional to a variable if present
嗨,我正在使用Java Optional。 我看到Optional有一個方法ifPresent。
而不是做這樣的事情:
Optional<MyObject> object = someMethod();
if(object.isPresent()) {
String myObjectValue = object.get().getValue();
}
我想知道如何使用Optional.ifPresent()將值賦給變量。
我在嘗試這樣的事情:
String myValue = object.ifPresent(getValue());
我需要什么lambda函數來獲取賦值給該變量的值?
很晚但我做了以下:
String myValue = object.map(x->x.getValue()).orElse("");
//or null. Whatever you want to return.
您可以使用#orElse或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)
(或您想要使用的任何其他方法/函數object.map(MyObject::toString)
來執行此操作。 Optional<String>
的String值,否則如果Optional沒有值,則返回默認值。 為此,您可以使用orElse
結合這些:
String myValue = object.map(MyObject::toString).orElse(null);
可選l = stream.filter ..... // java 8流條件
if(l!=null) {
ObjectType loc = l.get();
Map.put(loc, null);
}
.findFirst()
返回一個Optional<MyType>
,但如果我們添加.orElse(null)
則返回可選的if isPresent()
的get,即( MyType
),否則返回NULL
MyType s = newList.stream().filter(d -> d.num == 0).findFirst().orElse(null);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.