sourcecode

Collections.emptyList()와 Collections의 차이점은 무엇입니까?빈 목록

copyscript 2022. 9. 24. 10:12
반응형

Collections.emptyList()와 Collections의 차이점은 무엇입니까?빈 목록

Java에는 Collections.emptyList() Collections가 있습니다.[EMPLY_LIST] (비어 있음)둘 다 동일한 속성을 가집니다.

빈 목록(불변)을 반환합니다.이 목록은 직렬화할 수 있습니다.

그렇다면 둘 중 하나를 사용하는 것과 다른 하나를 사용하는 것의 정확한 차이점은 무엇일까요?

  • Collections.EMPTY_LIST이전 스타일을 반환합니다.
  • Collections.emptyList()type-module을 사용하므로 반환한다.

collections.emptyList()는 Java 1.5에서 추가되었으며 항상 권장됩니다.이렇게 하면 코드 내에서 불필요하게 캐스트를 할 필요가 없습니다.

Collections.emptyList()본질적으로 캐스팅을 하는 거죠

@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
    return (List<T>) EMPTY_LIST;
}

소스에 대해서 설명하겠습니다.

 public static final List EMPTY_LIST = new EmptyList<>();

그리고.

@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
    return (List<T>) EMPTY_LIST;
}

즉, EMTIFY_LIST는 safe 타입이 아닙니다.

  List list = Collections.EMPTY_LIST;
  Set set = Collections.EMPTY_SET;
  Map map = Collections.EMPTY_MAP;

비교 대상:

    List<String> s = Collections.emptyList();
    Set<Long> l = Collections.emptySet();
    Map<Date, String> d = Collections.emptyMap();

그들은 완전히 동등한 대상이다.

public static final List EMPTY_LIST = new EmptyList<>();

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

유일한 것은 그것이다.emptyList()범용 반환List<T>따라서 이 목록을 경고 없이 범용 컬렉션에 할당할 수 있습니다.

언급URL : https://stackoverflow.com/questions/14870819/what-is-the-difference-between-collections-emptylist-and-collections-empty-lis

반응형