Optional은 값이 있거나 없다는 상태를 표현하는 Java 컨테이너 타입이다. 결과가 없을 수 있는 메서드 반환값에 주로 사용한다.
Java 실행과 API |
|---|
JVM · javac · Java 바이트코드 · Java 가비지 컬렉션 · Java 제네릭 |
Java 인터페이스 · Java 예외 처리 · Java Stream API · Java Optional · Java 리플렉션 |
원리
값이 있으면 변환하거나 소비하고 없으면 기본값을 선택하는 API를 제공한다. Optional 객체 자체를 null로 두지 않는 것이 계약을 명확하게 한다.
예시
사용자 검색 결과를 Optional<User>로 반환하면 호출자가 없는 경우를 orElseGet이나 다른 분기로 처리할 수 있다.
주의할 점
존재 확인 없이 get을 호출하면 빈 상태에서 예외가 난다. 모든 필드를 무조건 Optional로 감싸는 것과 결과 부재를 명시하는 설계는 구별해야 한다.