Получить значение из одного необязательного или другого

У меня дваjava.util.Optional экземпляры и я хочу получитьOptional что либо:

Имеет значение первого Необязательно, если оно имеет значение.Имеет значение второго Необязательно, если оно имеет значение.Пусто ни того, ни другого Не имеет значения.

Есть ли прямой способ сделать это, то есть уже есть какой-то API для этого?

Следующие выражения сделают это, но я должен упомянуть первый необязательный дважды:

firstOptional.isPresent() ? firstOptional : secondOptional

Это именно то, чтоcom.google.common.base.Optional.or() делает, но этот метод отсутствует в API Java 8.

Принятый ответ отaioobe перечисляет несколько альтернативных подходов, чтобы преодолеть это упущениеOptional API прямо там, где нужно вычислить такое значение (что отвечает на мой вопрос). Теперь я решил добавить служебную функцию к моей базе кода:

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

Ответы на вопрос(4)

Ваш ответ на вопрос