본문 바로가기
Java/Java

Collections.emptyList()와 Collections.EMPTY_LIST의 차이

by 개발하는 호빗 2023. 4. 27.

개발을 하다 보면 return type은 정해뒀지만, 어느것도 return할 필요가 없는 상황이 생긴다.

단순하게 null을 반환할 수도 있겠지만 null로 인한 오류 발생 가능성도 있고, 후에 null 체크를 해줘야 한다는 점에서  

null을 리턴하는 것엔 주의가 필요하다.

 

대신 빈 객체를 return하는 것이 좋은데, Collections는 아래의 빈 컬렉션을 return하는 메서드를 제공한다.

 

Collections.emptyList();

Collections.emptySet();

Collections.emptyMap();

 

그런데, 메서드 뿐만 아니라 상수 또한 제공하고 있다.

Collections.EMPTY_LIST;

Collections.EMPTY_SET;

Collections.EMPTY_MAP;

 

상수도 있고 메서드도 있는 이유는 뭘까?

 

@SuppressWarnings("rawtypes")
public static final List EMPTY_LIST = new EmptyList<>();

상수를 보면 타입이 없는 List를 반환한다.

따라서 특정 타입의 List를 반환하고 싶어도 Collections.EMPTY_LIST 로는 type safe한 값을 리턴할 수가 없다.

이를 보완하기 위해서 제네릭을 이용해서 타입에 유연한 빈 컬렉션을 반환하는 메서드가 만들어진 것이다.

 

public static final <T> List<T> emptyList() {
    return (List<T>) EMPTY_LIST;
}

결론

Collections.emptyList()는 Collections.EMPTY_LIST의 type safe한 버전!

참고

[1] https://kth990303.tistory.com/281

'Java > Java' 카테고리의 다른 글

Java 참조  (0) 2023.10.08
Java 기초 :: JVM과 컴파일  (0) 2022.05.09
Builder Pattern과 lombok @Builder  (0) 2022.04.10
Java :: Map loop 사용하기  (0) 2022.03.17