Могу ли я использовать Collections.EMPTY_LIST для исключения UncheckedException?
Существует ли универсальный способ использования Collection.EMPTY_LIST в моей программе Java.
Я знаю, что могу просто объявить один сам, но мне просто интересно узнать, есть ли способ в JDK сделать это.
Что-то вроде users = Collections<User>.EMPTY_LIST;
Ответы
Ответ 1
Выполняя следующее:
List<User> users = Collections.emptyList();
Тип возвращаемого списка из Collections.emptyList();
будет выведен как String
из-за левой стороны назначения. Однако, если вы предпочитаете не иметь этого вывода, вы можете определить его явно, выполнив следующее:
List<User> users = Collections.<User>emptyList();
В этом конкретном случае это может показаться избыточным для большинства людей (на самом деле, я видел очень маленький код в дикой природе, который использует явные аргументы типа), однако для метода с сигнатурой: void doStuff(List<String> users)
было бы совершенно чисто, если бы один вызывал doStuff()
с явным аргументом типа следующим образом:
doStuff(Collections.<String>emptyList());
Ответ 2
List<User> users = Collections.emptyList();
Ответ 3
После создания пустого списка я бы рекомендовал хранить его как константу, а не создавать новый каждый раз.
Кроме того, существуют преимущества производительности при использовании Collections.emptyList()
по сравнению с new ArrayList(0)
, хотя разница, вероятно, мала. Список, возвращенный функцией emptyList(), оптимизирован как неизменный пустой список. Например, метод size() просто возвращает 0, а не поиск в поле или что-то вроде ArrayList.