Для иллюстрации порядка исполнения инициализирующих
Для иллюстрации порядка исполнения инициализирующих конструкций рассмотрим следующий пример:
public class Test { { System.out.println("initializer"); } int x, y=getY(); final int z; { System.out.println("initializer2"); } private int getY() { System.out.println("getY() "+z); return z; } public Test() { System.out.println("Test()"); z=3; } public Test(int x) { this(); System.out.println("Test(int)"); // z=4; - нельзя! final-поле уже // было инициализировано } }
После выполнения выражения new Test() на консоли появится:
initializer getY() 0 initializer2 Test()
Обратите внимание, что для инициализации поля y вызывается метод getY(), который возвращает значение final-поля z, которое еще не было инициализировано. Поэтому в итоге поле y получит значение по умолчанию 0, а затем поле z получит постоянное значение 3, которое никогда уже не изменится.
После выполнения выражения new Test(3) на консоли появится:
initializer getY() 0 initializer2 Test() Test(int)
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий