Удобно объявлять функции для сопоставления значений и их потребления, если они присутствуют.
В ситуации, когда у вас есть несколько обязательных объектов и несколько опций, я обнаруживаю, что я обертываю другие в Optional.of(обязательный), так что я могу использовать те же выражения для них, не записывая все это назад.
Food vegetables = Food.someVegetables();
Optional<Food> condiment = Food.someCondiment();
Optional<Food> spices = Food.someSpices();
condiment.map(prepare).ifPresent(putOnPlate);
spices.map(prepare).ifPresent(putOnPlate);
Но тогда мне не нравится этот код:
putOnPlate.accept(prepare.apply(vegetables));
поэтому я завершу его:
Optional.of(vegetables).map(prepare).ifPresent(putOnPlate);
Но это просто неправильно, потому что овощи (в этом примере) на самом деле необязательны. Они очень важны, и я просто дал каждому впечатление, что они являются необязательными.
Итак, мой вопрос: есть ли какой-то класс в java, например java.util.Mandatory, поэтому я могу написать:
Mandatory.of(vegetables).map(prepare).definitelyPresentSo(putOnPlate);