Моя проблема: у меня есть два или более варианта, которые обертывают разные типы. Я хочу выполнить операцию, которая может быть выполнена только в том случае, если все опции не пусты.Объединить Java 8 Варианты с условным И
В настоящее время Im делает это таким образом:
Optional<PatientCase> caseOptional = patientCaseRepository.findOneById(caseId);
Optional<User> userOptional = userRepository.findOneById(caseId);
if(userOptional.isPresent() && caseOptional.isPresent()) {
caseOptional.get().getProcess().setDesigner(userOptional.get());
}
На мой взгляд, если условие не чувствует себя хорошо. Я знаю, что можно связать Опционы с помощью orElse. Но в моем случае я не хочу логического Else. Есть ли способ создать и оператор ИИ для объединения двух или более опций , похожих на этот код PSEUDO?
caseOptional.and.userOptional.ifPresent((theCase,user) -> //Perform Stuff);
Последней форма выглядит очень похожа на монады, может быть, она может быть оформлена в виде одного :) –
Thx для приведенных примеров/предложений. Кажется, что первые два работают на двоих и не более двух опций. Я думаю, что больше может быть достигнуто с использованием настраиваемого объекта, который содержит дополнительные опции. Но это большие накладные расходы. Последние два предложения показывают, что можно связать несколько опций с использованием ifPresent вложенным способом. Таким образом, это решение для данной проблемы, но, к сожалению, читаемость кода уменьшается с каждым добавленным необязательным. Я все равно буду ждать немного, если кто-то найдет другой метод с лучшей читабельностью, иначе я буду принимать это как ответ. – TardigradeX