Могу ли я использовать 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.