Инициализация двойной скобки в Java описывает слияние двух разных процедур. Две скобки включены, как следует из названия. Программисты часто используют одну фигурную скобку. Безымянный внутренний класс создается в первой фигурной скобке инициализации двойной фигурной скобки. Этот метод использовался нами для создания нескольких анонимных внутренних классов.

Уникальность этой скобки заключается в том, что она расположена после первой, что является стандартным для Java. Раздел инициализации для указанного безымянного внутреннего класса находится во второй фигурной скобке. Инициализация двойной скобки Java относится к использованию этого блока инициализации с безымянным внутренним классом.

Для того, чтобы стать разработчиком, вы можете пройти Курс Java-разработки.

Инициализация двойной скобки Java

В Java инициализация с помощью двойной скобки объединяет две отдельные процедуры. Для завершения решения требуются две скобки. Инициализация двойными скобками используется всякий раз, когда вы наблюдаете два набора фигурных скобок подряд в данных кода Java.

В первой фигурной скобке создается новый скрытый класс. Если вы просто посмотрите на первую фигурную скобку, мы не заметим здесь ничего нового. В этом методе мы создали много анонимных внутренних классов.

Блок кода после второй фигурной скобки служит инициализацией. Даже там вы обнаружили класс инициализации. Возможно, был использован статический блок инициализации. Для безымянного внутреннего класса использование блока инициализации приводит к инициализации двойной фигурной скобки Java. Ссылка на внешний класс будет включена во вновь созданный внутренний класс.

Использование двойной скобки для инициализации

Коллекции могут быть инициализированы с помощью инициализации двойной фигурной скобки. Инициализацию двойными скобками часто называют предпочтительным методом заполнения набора констант. Использование инициализации двойной скобки для настройки коллекций кажется мне ненужным. В JDK 1.7 для этого будет создана отдельная конструкция. Тогда использование инициализации двойной скобки в Java было бы совершенно ненужным.

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

  1. По сравнению с обычным методом построения и инициализации требуется меньше строк кода.
  2. Теперь легче понять код.
  3. Все необходимые выражения инициализации создания объединены в одно.

Недостатки использования двойных фигурных скобок

  1. Необычная и малоизвестная техника инициирования чего бы то ни было.
  2. Каждый раз, когда мы его используем, создается новый класс.
  3. Не совместим с новой функциональностью «алмазного оператора» Java 7.
  4. Наличие конечного класса не позволяет нам расширять его.
  5. Сохраняет секретную ссылку на свой контейнер, что может привести к неэффективному использованию памяти.

Из-за всех этих недостатков инициализация с использованием двойных фигурных скобок считается плохой практикой.

Альтернативные подходы

1. Методы фабрики потоков Java 9:

Фабричные методы для создания и установления коллекций Java в одной строке — это лишь одна из многих новых функций, включенных в выпуск Java 9. Если вы используете Java 9 или более позднюю версию, это может быть жизнеспособным и даже предпочтительным вариантом. Это избавляет от необходимости в дополнительной паре фигурных скобок для инициализации.

2. Коллекции потоков в Java 8

Подобные сценарии были доступны в Streams API начиная с Java 8. Он предлагает множество удобных сборщиков для накопления компонентов Stream в различных типах коллекций.

Ограничения

  1. Инициализация класса двойными скобками указывает, что это внутренний класс. Пока они не окончательные, мы можем сделать их для любого класса.
  2. Поскольку функция equals() часто также проверяет равенство классов, такие классы не следует использовать, если только метод явно не обновлен для их использования.
  3. Помните, что инициализаторы выполняются перед конструкторами (но после конструкторов суперкласса).
  4. Вы сделали синтетическую ссылку на объемлющий объект в экземпляре сгенерированного вами анонимного класса. Все члены внешнего класса будут сериализованы вместе с коллекцией, если вы сериализуете коллекцию.

Заключение

Инициализация двойной скобкой была представлена ​​в этом уроке Java как альтернатива более распространенной инициализации, которая приводит к ненужному повторению кода. Мы обнаружили недостатки двойных скобок и множество способов добиться той же цели с помощью более надежного кода.

Вы можете записаться на онлайн-курсы по Java, чтобы детально разобраться в этом предмете.