Философия Java

         

Не статическая инициализация экземпляра


Java обеспечивает аналогичный синтаксис для не static переменных для каждого объекта. Вот пример:

//: c04:Mugs.java

// Java "Инициализация экземпляра".

class Mug { Mug(int marker) { System.out.println("Mug(" + marker + ")"); } void f(int marker) { System.out.println("f(" + marker + ")"); } }

public class Mugs { Mug c1; Mug c2; { c1 = new Mug(1); c2 = new Mug(2); System.out.println("c1 & c2 initialized"); } Mugs() { System.out.println("Mugs()"); } public static void main(String[] args) { System.out.println("Inside main()"); Mugs x = new Mugs(); } } ///:~

Вы можете видеть, что предложение инициализации экземпляра:

{ c1 = new Mug(1); c2 = new Mug(2); System.out.println("c1 & c2 initialized"); }

выглядит точно так же, как и предложение статической инициализации, за исключением отсутствия ключевого слова static. Этот синтаксис необходим для поддержки инициализации анонимного внутреннего класса (смотрите Главу 8).



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