Я доволен ответом на любом языке, но в конечном итоге хочу получить ответ на Java. (Java 8+ в порядке. Не ограничивается Java 8. Я пытался исправить теги.)
Если у меня есть два значения Optional<Integer>, как я могу кратко вычислить эквивалент a || b, что означает: a, если он определен; иначе b, если он определен; иначе empty()?
Optional<Integer> a = ...;
Optional<Integer> b = ...;
Optional<Integer> aOrB = a || b; // How to write this in Java 8+?
Я знаю, что могу написать a.orElse(12), но что, если значение по умолчанию также Optional?
Очевидно, что в С# оператор ?? делает то, что я хочу.