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