item 54) null이 아닌, 빈 컬렉션이나 배열을 반환하라
null을 반환할 경우
컬렉션이 비었을(empty) 때 null을 반환하는 경우, 클라이언트에서는 null 상황을 처리하는 코드를 추가로 작성해야 한다.
컬렉션이나 배열같은 컨테이너가 빌 때 null 반환하는 메서드를 사용할 때에 아래와 같이 방어 코드가 없다면 오류가 발생 할 수 있다.
null 대신 빈 컨테이너를 반환하면, 오류 발생을 막고 클라이언트 코드를 간결하게 만들 수 있다.
빈 컨테이너 할당 시 비용 문제
성능 분석을 통해(item67) 빈 컨테이너 할당이 성능 저하의 주범이라고 확인되지 않는 한, 크게 신경 쓸 수준의 성능 저하는 없다.
빈 컬렉션과 배열을 새로 할당 안하고도 Collections에 있는 emptyList, emptySet, emptyMap 등의 메서드를 통해 불변 컬렉션을 반환할 수 있다.
배열을 반환하는 경우에도 null 대신 길이가 0인 배열 반환하기
static final으로 길이가 0인 불변 객체를 선언해두고 공유해도 안전하다.
그렇다고 아래 예제와 같이 미리 toArray에 넘기는 배열을 할당하는 것은 성능이 떨어질 수 있다. 그냥 위 예시처럼 사용하도록 한다.
Last updated