Философия Java

         

Пустые final


Java позволяет создавать пустые (чистые) final объекты (blank final), это такие поля данных, которые были объявлены как final но при этом не были инициализированы значением. Во всех случаях, пустая final переменная должна быть инициализирована до ее использования и компилятор обеспечивает это условие. Тем не менее, пустые final поля предоставляют большую гибкость при использовании модификатора final, к примеру, final поле внутри класса может быть разным для каждой копии объекта. Вот пример:

//: c06:BlankFinal.java

// "Пустые" final данные.

class Poppet { }

class BlankFinal { final int i = 0; // инициализируем final

final int j; // пустой final

final Poppet p; // Ссылка на пустой final

// Пустой final ДОЛЖЕН быть инициализирован

// в конструкторе:

BlankFinal() { j = 1; // инициализируем чистую final

p = new Poppet(); } BlankFinal(int x) { j = x; // Инициализируем чистую final

p = new Poppet(); } public static void main(String[] args) { BlankFinal bf = new BlankFinal(); } } ///:~

Вы принудительно должны осуществить соединение переменной final со значением при ее определении или в конструкторе. При этом гарантировано не будет доступа к переменной, до ее инициализации.



Содержание раздела