JavaRush /Курси /Java Multithreading /Конструктори/змінні анонімних інер класів, final

Конструктори/змінні анонімних інер класів, final

Java Multithreading
Рівень 4 , Лекція 8
Відкрита

— Привіт, Аміго!

Як ти вже знаєш, анонімні внутрішні класи не мають конструктора.

— Ага. Це дуже незручно. Конструктор – це дуже потрібна річ.

— Як то кажуть, якщо не можна, але дуже хочеться, то можна.

Згадай, у статичних змінних немає статичного конструктора, але є статичний ініціалізатор – static-блок.

— Ага, я пам'ятаю.

— Ось такий самий ініціалізатор, тільки не статик, є в анонімних внутрішніх класів:

Приклад
class Car {
 public ArrayList<Car> createPoliceCars(int count) { ArrayList<Car> result = new ArrayList<Car>(); for(int i=0; i<count; i++) { final int number = i; result.add(new Car() { int policeNumber; { policeNumber = number; } }); } return result; }
}

Цього разу я виділила червоним кольором код анонімного внутрішнього класу, а фіолетовим – його ініціалізатор – чи фактично конструктор. Тіло «конструктора» є, а заголовка методу – ні:

Чекання Реальність
class Car { int policeNumber;
 Car(){ policeNumber = number; }
}
class Car { int policeNumber;
{ policeNumber = number; }
}

Ти можеш оголошувати змінні всередині такого класу та ініціалізувати їх усередині ініціалізатора.

— Відмінно, тепер обмежень значно менше.

— На цьому ми наше знайомство із внутрішніми класами та закінчимо. Сподіваюся, тобі сподобалося.

— Дуже. Лекції Кім, Ріші, а особливо твої, Еллі, були просто незрівнянними.

— Лестець! Продовжуй…

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ