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

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

Відкрита

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

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

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

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

Згадай, у статичних змінних немає статичного конструктора, але є статичний ініціалізатор – 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; }
}

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

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

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

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

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

Коментарі
  • популярні
  • нові
  • старі
Щоб залишити коментар, потрібно ввійти в систему
Для цієї сторінки немає коментарів.