-
Notifications
You must be signed in to change notification settings - Fork 3
Empty in Collections and Iterators
Мы часто создаем в наших классах ссылки на какие-то коллекции. Т.е:
public class Hello {
private List<String> names;
/*Some code and logic*/
}
При таком объявлении вы должны в конструкторе создать объект List-а и присвоить его ссылке. Если этого не сделать - names будет равен null
, что чревато NPE.
Именно для такого случая в Java, в классе Collections
есть специальные неизменяемые пустые коллекции.
Для примера рассмотрим вот такой код: Example
Пользуясь таким способом мы можем избежать нежелательных NPE.
При этом надо понимать, что вы можете создать объект и присвоить ссылке прямо при объявлении, но данный способ дает вам гибкость в выборе реализации(в разных конструкторах можно использовать разные реализации List), позволяет, при необходимости, рассчитать capacity
для коллекции, в зависимости от количества добавляемых элементов. Плюс вы можете вернуть всегда безбоязненно итератор на такую коллекцию.
Но пусть вы используете другой подход. Example
Тогда, если вы возвращаете итератор - вы должны проверить, а есть ли объект по ссылке вашей, на коллекцию? Потому что, если нет - NPE ждет вас. Но логичнее возвращать пустой итератор на такую ссылку(хотя спорно, лучше вообще избегать таких вещей). Для этого есть специальный пустой итератор, смотрим код выше.
Подобные вещи в классе Collections
призваны вас писать более safety код, помогая обойти проблемы с NPE.