Open HanaHww2 opened 1 year ago
리턴값 != null
과 같은 방어 또는 오류 처리 코드를 넣어줘야함빈 컬렉션 할당해서 반환하는 방법
가능성은 작지만 사용 패턴에 따라 성능 저하 유발 가능
빈 불변 컬렉션을 매번 반환하는 방법 (최적화 방법)
첫 번째 방법의 대안으로 불변 객체는 공유해도 안전하다(아이템 17)는 특징 이용한
=> 필요할 때만 사용하고 수정 전/후의 성능 측정을 통해 성능 개선을 확인해야함.
// 빈 컬렉션이 매번 새로 할당되지 않음
public List<Cheese> getCheeses() {
return cheeseslnStock.isEmpty() ? Collections.emptyList() : new ArrayList<> (cheeseslnStock};
}
public Cheese[] getCheeses() {
return cheeseslnStock.toArray(new Cheese[이 );
}
길이가 0인 불변 배열을 미리 선언해두고 매번 반환하는 방법 (최적화 방법)
private static final Cheese[] EMPTY_CHEE5E_ARRAY = new Cheese[0];
/*
원소가 하나라도 있을 경우,
Cheese[] 타입의 배열을 새로 생성해서 반환, 없을 경우면 EMPTY_CHEESE_ARRAY 반환
*/
public Cheese [] getCheeses() {
return cheeseslnStock.toArray(EMPTY_CHEESE_ARRAY);
}
cf) 성능 개선이 목적이라면 toArray에 넘기는 배열을 미리 할당하는 건 성능 저하의 원인이 된다.
return cheeseslnStock.toArray(new Cheese[cheeseslnStock.size()]);
앞으로 웬만하면 Null 리턴을 하지 않도록 주의해야겠네요
null 리턴을 종종 쓰곤 했는데 정리한 걸 토대로 해서 올바르게 리턴해보겠습니다