Como eu conciso escrever um || b onde aeb são valores opcionais?

Estou feliz com uma resposta em qualquer idioma, mas no final quero uma resposta em Java. (Java 8+ está bom. Não se limita ao Java 8. Tentei corrigir as tags.)

Se eu tiver doisOptional<Integer> valores, como calcular concisamente o equivalente aa || b, o que significa:a, se estiver definido; de outra formab, se estiver definido; de outra formaempty()?

Optional<Integer> a = ...;
Optional<Integer> b = ...;
Optional<Integer> aOrB = a || b; // How to write this in Java 8+?

Sei que sei escrevera.orElse(12), mas e se o "valor" padrão também forOptional?

Evidentemente, em C #, o operador?? faz o que eu quero.

questionAnswers(5)

yourAnswerToTheQuestion