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

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

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

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

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

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

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

Приклад
class Car
{
 public ArrayList&ltCar> createPoliceCars(int count)
 {
  ArrayList&ltCar> result = new ArrayList&ltCar>();

  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;
}
}

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

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

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

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

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