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


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

컬렉션이 비었으면 null을 반환한다 - 따라하지 말 것

private final List<Cheese> cheesesInStock = ...;

public List<Cheese> getCheeses() {
  return cheesesInStock.isEmpty() ? null : new ArrayList<>(cheesesInStock);
}

// 호출 하는 곳에서 null 체크를 매번 해줘야 한다!!
List<Cheese> cheeses = shop.getCheeses();
if (cheeses != null && cheeses.contains(Cheese.STILTON))
  System.out.println("Test");

빈 컬렉션을 반환하는 예 - 매번 새로 할당하지 않도록 함

public List<Cheese> getCheeses() {
  return cheesesInStock.isEmpty() ? Collections.emptyList() : new ArrayList<>(cheesesInStock);
}

빈 배열을 반환하는 예 - 매번 새로 할당하지 않도록 함

private static final Cheese[] EMPTY_CHEESE_ARRAY = new Cheese[0];

public Cheese[] getCheeses() {
  return cheesesInStock.toArray(EMPTY_CHEESE_ARRAY);
}