Могу ли я использовать Collections.EMPTY_LIST без исключения UncheckedException? - PullRequest
15 голосов
/ 04 октября 2008

Есть ли в моей программе Java дружественный способ использования Collection.EMPTY_LIST.

Я знаю, что могу сам объявить один, но мне просто интересно узнать, есть ли способ в JDK сделать это.

Что-то вроде users = Collections<User>.EMPTY_LIST;

Ответы [ 3 ]

31 голосов
/ 04 октября 2008

Делая следующее:

List<User> users = Collections.emptyList();

Тип возвращаемого списка из Collections.emptyList(); будет выведен как String из-за левой части назначения. Однако, если вы предпочитаете не иметь этого вывода, вы можете определить его явно, выполнив следующее:

List<User> users = Collections.<User>emptyList(); 

В этом конкретном случае это может показаться избыточным для большинства людей (на самом деле, я видел очень мало кода в дикой природе, который использует явные аргументы типа), однако для метода с подписью: * было бы совершенно чисто для вызова doStuff() с явным аргументом типа следующим образом:

doStuff(Collections.<String>emptyList());
1 голос
/ 17 октября 2008

После создания пустого списка я бы рекомендовал хранить его как константу, а не создавать новый каждый раз.

Кроме того, использование Collections.emptyList() по сравнению с new ArrayList(0) дает преимущества в производительности, хотя разница, вероятно, небольшая. Список, возвращаемый emptyList (), оптимизирован, чтобы быть неизменным пустым списком. Например, метод size () просто возвращает 0, а не поиск по полю или что-либо, что делает ArrayList.

1 голос
/ 04 октября 2008
List<User> users = Collections.emptyList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...