В чем разница между Collections.emptyList() и Collections.EMPTY_LIST В Java мы Collections.emptyList() и Коллекции. EMPTY_LIST. Оба имеют одно и то же свойство: Возвращает пустой список (неизменный). Этот список является сериализуемым. Так в чем же разница между использованием одного или другого? Ответ 1 Collections.EMPTY_LIST возвращает старый стиль List Collections.emptyList() использует тип-вывод и, следовательно, возвращает List<T> Collections.emptyList() добавлен в Java 1.5 и, вероятно, всегда предпочтительнее. Таким образом, вам не нужно излишне бросать в свой код. Collections.emptyList() внутренне выполняет бросок для вас. @SuppressWarnings("unchecked") public static final <T> List<T> emptyList() { return (List<T>) EMPTY_LIST; } Ответ 2 Позволяет добраться до источника: public static final List EMPTY_LIST = new EmptyList<>(); и @SuppressWarnings("unchecked") public static final <T> List<T> emptyList() { return (List<T>) EMPTY_LIST; } Ответ 3 Это абсолютно равные объекты. public static final List EMPTY_LIST = new EmptyList<>(); public static final <T> List<T> emptyList() { return (List<T>) EMPTY_LIST; } Единственное, что emptyList() возвращает общий List<T>, поэтому вы можете назначить этот список для общей коллекции без каких-либо предупреждений. Ответ 4 Другими словами, EMPTY_LIST не безопасен для типов: 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();
Ответ 1 Collections.EMPTY_LIST возвращает старый стиль List Collections.emptyList() использует тип-вывод и, следовательно, возвращает List<T> Collections.emptyList() добавлен в Java 1.5 и, вероятно, всегда предпочтительнее. Таким образом, вам не нужно излишне бросать в свой код. Collections.emptyList() внутренне выполняет бросок для вас. @SuppressWarnings("unchecked") public static final <T> List<T> emptyList() { return (List<T>) EMPTY_LIST; }
Ответ 2 Позволяет добраться до источника: public static final List EMPTY_LIST = new EmptyList<>(); и @SuppressWarnings("unchecked") public static final <T> List<T> emptyList() { return (List<T>) EMPTY_LIST; }
Ответ 3 Это абсолютно равные объекты. public static final List EMPTY_LIST = new EmptyList<>(); public static final <T> List<T> emptyList() { return (List<T>) EMPTY_LIST; } Единственное, что emptyList() возвращает общий List<T>, поэтому вы можете назначить этот список для общей коллекции без каких-либо предупреждений.
Ответ 4 Другими словами, EMPTY_LIST не безопасен для типов: 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();