java - 使用 Java Optional 寻找更实用的方法?

标签 java intellij-idea java-8

我正在尝试尽可能多地使用 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 功能还很陌生。

最佳答案

How about :

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/

相关文章:

java - Spring 具有 IntelliJ 属性 p :prefix is not allowed here

java - 使用 Lambda Map 函数而不是迭代来填充 Map

java - 无法从 View 转换为 ListView

java - 这种 vigenere 密码在 Java 中是否可行?

visual-studio-code - 如何导出为带有语法高亮的pdf?

java - 在 IntelliJ 中应用格式化编码风格

java - Java 8 中的非干扰示例

java - 使用 Java 8 检查数组中是否存在元素

java - 如何验证 JavaFX 2.0 在 XP 机器上使用 directx 9?

java - 了解多重继承和接口(interface)