8장_아이템54 - ririkat/effective-java GitHub Wiki

아이템54. null이 아닌, 빈 컬렉션이나 배열을 반환하라.


null을 반환하게 되면, 클라이언트가 null을 처리하는 방어 코드를 추가로 작성해야 한다.

  • 오류 발생 가능성 높아짐
  • 코드가 복잡해짐 따라서, null보다는 빈 컬렉션이나 배열을 반환하라.

빈 컨테이너를 반환하는 것은 할당 비용이 드니 null을 반환하는 쪽이 낫다는 주장도 있지만

  • 대부분의 경우 성능 차이가 신경쓸 수준이 못 됨
  • 새로 할당하지 않고도 빈 컬렉션과 배열 반환 가능 위의 이유로 크게 신경쓰지 않아도 된다.

가능성은 작지만, 사용 패턴에 따라 성능이 크게 저하되는 경우도 있다. 그 해법은 아래와 같다.

💡 해법

매번 똑같은 빈 불변 컬렉션을 반환하라.


  • 빈 불변 컬렉션 반환 방법
Collections.emptyList();
Collections.emptySet();
Collections.emptyMap();

  • 빈 불변 배열 반환 방법
private static final Chees[] EMPTY_CHEESE_ARRAY = new Cheese[0]; // 미리 할당하여 사용하기

// 1. 반환 시점에 빈 배열 반환
return new Cheese[0];

// 2. 미리 할당한 빈 불변 배열 반환
return EMPTY_CHEESE_ARRAY;
⚠️ **GitHub.com Fallback** ⚠️