簡體   English   中英

如果存在,則將Optional的值分配給變量

[英]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.

您可以使用#orElseorElseThrow來提高代碼的可讀性。

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

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

你需要做兩件事:

  1. Optional<MyObject>轉換為Optional<String> ,如果原始Optional具有值,則其值為。 您可以使用mapobject.map(MyObject::toString) (或您想要使用的任何其他方法/函數object.map(MyObject::toString)來執行此操作。
  2. 獲取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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM