본문 바로가기

이펙티브 자바

[이펙티브 자바] 아이템 55. 옵셔녈 반환은 신중히 하라

  • Opional을 반환하는 메서드에서는 절대 null을 반환하지 말자.
  • 컬렉션, 스트림, 배열, 옵셔널 같은 컨테이너 타입은 옵셔널로 감싸면 안 된다.
  • 옵셔널을 반환값이 아닌 필드나 다른 용도로 사용하지 말자.

 

 

메서드 반환 타입을 T 대신 Optional<T>로 선언해야 하는 기본 규칙 : 

  • 결과가 없을 수 있으며, 클라이언트가 이 상황을 특별하게 처리해야 한다면 Optional<T>를 반환한다.

 

핵심 정리 : 값을 반환하지 못할 가능성이 있고, 호출할 때마다 반환값이 없을 가능성을 염두에 둬야하는 메서드라면 옵셔널을 반환해야 할 상황일 수 있다. 하지만 옵셔널 반환에는 성능 저하가 뒤따르니, 성능에 민감한 메서드라면 null을 반환하거나 예외를 던지는 편이 나을 수 있다. 그리고 옵셔널을 반환값 이외의 용도로 쓰는 경우는 매우 드물다.