Обычно рекомендуется создавать экземпляры полей-членов (объектов или примитивов) во время создания, когда значение по умолчанию (0, false или null) не соответствует желаемому. Один раз, чтобы отложить это для ленивого экземпляра. (Это используется, например, когда объект может и не понадобиться, а его создание стоит дорого.) Еще один раз отложить это, когда другая инициализация должна быть выполнена заранее.
Предполагая, что вы хотите инициализировать поле во время создания объекта, есть два способа сделать это: с помощью выражения инициализатора, как вы показали, или в конструкторе (ах). Разницы не так много, за исключением того, что инициализаторы экземпляра запускаются перед первой строкой конструктора. Это может или не может вызвать проблемы, в зависимости от вашей логики кода.
Также рекомендуется объявлять поля-члены final
всякий раз, когда они инициализируются при создании объекта и, как ожидается, не изменятся в течение срока службы объекта. Дополнительным преимуществом объявления поля final
является то, что компилятор поймает любой сбой при его инициализации. (Компилятор требует определенного присваивания, чтобы считать поле final
должным образом инициализированным.)