如果存在,则将Optional的值分配给变量

问题描述 投票:8回答:5

嗨,我正在使用Java Optional。我看到Optional有一个方法ifPresent。

而不是做这样的事情:

Optional<MyObject> object = someMethod();
if(object.isPresent()) {
    String myObjectValue = object.get().getValue();
}

我想知道如何使用Optional.ifPresent()将值赋给变量。

我在尝试这样的事情:

String myValue = object.ifPresent(getValue());

我需要什么lambda函数来获取赋值给该变量的值?

java lambda optional
5个回答
8
投票

您可以使用qazxsw poi或qazxsw poi来提高代码的可读性。

#orElse

orElseThrow

9
投票

很晚但我做了以下:

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

7
投票

你需要做两件事:

  1. 把你的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>(或您想要使用的任何其他方法/函数)来执行此操作。
  2. 获取map的String值,否则如果Optional没有值,则返回默认值。为此,您可以使用object.map(MyObject::toString)

结合这些:

Optional<String>

0
投票

可选l = stream.filter ..... // java 8流条件

orElse

0
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.