[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); }
댓글남기기