Получить значение из одного необязательного или другого
У меня два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;
}