내 문제 2 가지 이상의 Optionals가 다른 유형으로 포장되어 있습니다. 모든 선택 사항이 비어 있지 않은 경우에만 수행 할 수있는 작업을 수행하려고합니다.조건부 AND로 Java 8 옵션 합치기
현재 필자는이 방법을 수행하십시오 경우 상태를 잘 생각하지 않는 제 생각에는
Optional<PatientCase> caseOptional = patientCaseRepository.findOneById(caseId);
Optional<User> userOptional = userRepository.findOneById(caseId);
if(userOptional.isPresent() && caseOptional.isPresent()) {
caseOptional.get().getProcess().setDesigner(userOptional.get());
}
. orElse를 사용하여 Optionals를 연결할 수 있다는 것을 알고 있습니다. 하지만 제 경우에는 논리적 인 Else를 원하지 않습니다. 이 PSEUDO 코드와 유사한 두 개 이상의 Optionals 을 결합하기 위해 AND 연산자를 생성 할 수 있습니까?
caseOptional.and.userOptional.ifPresent((theCase,user) -> //Perform Stuff);
마지막 형태는 어쩌면이 주어진 예/제안 하나 : –
들으로 공식화 될 수있다, 모나드처럼 많이 보인다. 첫 번째 두 개는 두 개만 작동하며 두 개 이상은 작동하지 않는 것으로 보입니다. 나는 더 많은 것들이 optionals을 보유하고있는 커스텀 객체를 사용하여 달성 될 수 있다고 생각한다. 그러나 이것은 더 큰 오버 헤드입니다. 마지막 두 가지 제안은 중첩 된 방식으로 ifPresent를 사용하여 여러 옵션을 연결할 수 있음을 보여줍니다. 그래서 그것은 주어진 문제에 대한 해결책이지만 불행히도 추가 된 옵션마다 코드의 가독성이 떨어집니다. 누군가가 더 나은 가독성을 가진 다른 방법을 찾으면 조금 기다릴 것입니다. 그렇지 않으면 이것을 대답으로 받아 들일 것입니다. – TardigradeX