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

Как ты уже знаешь, у анонимных внутренних классов не может быть конструктора.

— Ага. Это очень неудобно. Конструктор – это очень нужная вещь.

— Как говорится, если нельзя, но очень хочется, то можно.

Вспомни, у статических переменных нет статического конструктора, но есть статический инициализатор – 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;
}
}

Ты можешь объявлять переменные внутри такого класса и инициализировать их внутри инициализатора.

— Отлично, теперь ограничений значительно меньше.

— На этом мы наше знакомство с внутренними классами и закончим. Надеюсь, тебе понравилось.

— Очень. Лекции Ким, Риши, а особенно твои, Элли, были просто бесподобными.

— Льстец! Продолжай…