我正在尝试尽可能多地使用 Optional 而不是正常的 null 检查;我遇到了我的 IDE (IntelliJ) 的建议:
Can be replaced by a singular expression in functional style.
这是有问题的代码,有问题的行:
Entry entry = maybeBytes.isPresent() ? Entry.deserialize(maybeBytes.get()) : new Entry();
我看了一点here ,但在这里找不到适合我的情况的用法,或者至少找不到适合我的用法。我对 lambda 功能还很陌生。
最佳答案
Entry entry = maybeBytes.map(Entry::deserialize).orElseGet(Entry::new);
如果maybeBytes
包含一个值,它将传递给您提供给 map()
的函数,你会得到一个 Optional<Entry>
结果(如果 maybeBytes
为空,您将得到一个空的 Optional<Entry>
)。 orElseGet()
会给你Optional<Entry>
的内容如果它是非空的,否则,它将为您提供评估传递给它的函数的结果(在本例中为 Entry
的构造函数)。
关于java - 使用 Java Optional 寻找更实用的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43664929/