[Effective Java] 아이템54 - null이 아닌 빈 컬렉션이나 배열을 반환하라

null 을 반환하는 메서드를 사용할 때면, 클라이언트 측에서 if-else 문을 사용해서 방어코드를 넣어줘야 한다. (안그러면 NullPointerException 발생)

따라서 null 보다는 빈 컨테이너를 반환하자

  public List<Cheese> getCheeses() {
    return new ArrayList<>(cheesesInStock);
  }

위와 같이하면 cheesesInStock이 null이어도 빈 컨테이너를 반환하게 된다. 빈 컬랙션을 항상 할당해서 반환하므로 성능상 이슈가 있을 수 있다. 따라서 매번 똑같은 “불변” 컬렉션을 만들고, 불변 컬렉션을 반환하게 한다.

  • Collections.emptyList

    public static final Set EMPTY_SET = new EmptySet<>();
    public static final <T> Set<T> emptySet() {
          return (Set<T>) EMPTY_SET;
      }
    
  • 배열의 경우 길이가 0인 배열을 반환

    private static final Cheese[] EMPTY_CHEESE_ARRAY = new Cheese[0];
    public Cheese[] getCheeses() {
      return cheesesInStock.toArray(EMPTY_CHEESE_ARRAY);
    }
    

댓글남기기