Java 9 Factory методы в коллекциях

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

Данная статья написана командой Vertex Academy. Это одна из статей из нашего Учебника по Java 9. Надеемся, что данная статья Вам будет полезна. Приятного прочтения!

1. Введение

С приходом Java 9 создавать immutable коллекции намного проще. Ранее для этого приходилось писать что-то несуразное либо использовать сторонние библиотеки, теперь же поддержка пришла со стороны самого языка. Как это выглядит и с чем его едят сегодня мы и разберем.

2. List

Создание списка выглядит так

Метод of() в интерфейсе List  перегружен и принимает от одного до десяти элементов. Если хотим создать коллекцию с более чем десятью элементами, тогда будет использоваться перегруженный метод с varargs

Сделано это с целью оптимизации, так как  при каждом вызове метода c varargs будет создаваться новый массив

3. Set

Ситуация с Set схожа с List

Set также имеет перегруженные методы, но в отличии от List, если передать дубликат в метод of(), то получим исключение

4. Map

А вот Map-ы создаются немного интереснее

Последовательности идут парами key, value. Всего таких пар может быть 10, в отличии от List и Set. Если в последовательности будут повторения ключей - получим исключение

5. Ограничения

  • Вышеупомянутые коллекции нельзя изменить, при попытке получим UnsupportedOperationException;
  • В метод of() нельзя передать null, во всех коллекциях получим NullPointerException;
  • Метод of() не создает привычные ArrayList, HashSet или HashMap. В Java 9 были созданы специальные ImmutableCollections которые и возвращаются;
  • ImmutableCollections являются сериализуемыми, если содержимое тоже является сериализуемым;

 

На этом статья заканчивается, но не новинки Java 9. Спасибо, что были с нами 🙂

Есть возможность записаться на наши курсы по Java. Детальную информацию смотрите у нас на сайте.

 

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr

Facebooktwittergoogle_plustumblrFacebooktwittergoogle_plustumblr
Самоучители--узнать детальнее--