相关疑难解决方法(0)

从一个可选或另一个获得价值

我有两个java.util.Optional实例,我想得到一个Optional:

  • 如果它有值,则具有第一个Optional的值.
  • 如果它有值,则具有第二个Optional的值.
  • 是空的既不是Optional也有值.

是否有直接的方法来做到这一点,即是否已经有一些API来做到这一点?

以下表达式会这样做,但我必须提到第一个可选的两次:

firstOptional.isPresent() ? firstOptional : secondOptional
Run Code Online (Sandbox Code Playgroud)

这正是com.google.common.base.Optional.or()如此,但Java 8的API中不存在该方法.


aioobe接受的答案列出了一些替代方法来克服这种遗漏OptionalAPI的权利,在这种情况下必须计算这样的值(这回答了我的问题).我现在选择在我的代码库中添加一个实用程序函数:

public static <T> Optional<T> or(Optional<T> a, Optional<T> b) {
    if (a.isPresent())
        return a;
    else
        return b;
}
Run Code Online (Sandbox Code Playgroud)

java optional java-8

48
推荐指数
3
解决办法
2万
查看次数

标签 统计

java ×1

java-8 ×1

optional ×1