Streams 초급

하나의 호출로 Optional의 존재 및 빈 케이스를 모두 처리합니다.

✕ Java 8
Optional<User> user = findUser(id);
if (user.isPresent()) {
    greet(user.get());
} else {
    handleMissing();
}
✓ Java 9+
findUser(id).ifPresentOrElse(
    this::greet,
    this::handleMissing
);
이 코드에 문제가 있나요? 알려주세요.
📏

단일 표현식

하나의 메서드 호출로 두 케이스가 처리됩니다.

🚫

get() 없음

위험한 isPresent() + get() 패턴을 제거합니다.

🔗

유창함

findUser()나 Optional을 반환하는 메서드 뒤에 자연스럽게 체이닝됩니다.

이전 방식
Optional에 대한 if/else
모던 방식
ifPresentOrElse()
JDK 버전
9
난이도
초급
Optional.ifPresentOrElse()
사용 가능

JDK 9 (2017년 9월) 이후 널리 사용 가능

ifPresentOrElse()는 존재 케이스를 위한 Consumer와 빈 케이스를 위한 Runnable을 받습니다. 두 가지 경우를 처리하기 위해 isPresent()와 별도 동작을 결합할 필요가 없습니다.

공유 𝕏 🦋 in