— Привіт, Аміго!
Як ти вже знаєш, анонімні внутрішні класи не мають конструктора.
— Ага. Це дуже незручно. Конструктор – це дуже потрібна річ.
— Як то кажуть, якщо не можна, але дуже хочеться, то можна.
Згадай, у статичних змінних немає статичного конструктора, але є статичний ініціалізатор – 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; }
}
Цього разу я виділила червоним кольором код анонімного внутрішнього класу, а фіолетовим – його ініціалізатор – чи фактично конструктор. Тіло «конструктора» є, а заголовка методу – ні:
| Чекання | Реальність |
|---|---|
|
|
Ти можеш оголошувати змінні всередині такого класу та ініціалізувати їх усередині ініціалізатора.
— Відмінно, тепер обмежень значно менше.
— На цьому ми наше знайомство із внутрішніми класами та закінчимо. Сподіваюся, тобі сподобалося.
— Дуже. Лекції Кім, Ріші, а особливо твої, Еллі, були просто незрівнянними.
— Лестець! Продовжуй…
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ