JavaRush /Курси /Java Multithreading /Локальні класи — класи усередині методів

Локальні класи — класи усередині методів

Java Multithreading
Рівень 4 , Лекція 5
Відкрита
Локальні класи — класи всередині методів - 1

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

Ще одна невелика тема – це локальні класи.

Як ти вже бачив, класи можна створювати не лише в окремих файлах, а й усередині інших класів. Так ось це ще не все. Класи можна створювати й усередині методів. Такі класи називають локальними. Вони працюють як звичайні внутрішні класи, але їх можна використовувати в межах методу, де їх оголосили.

Увага на екрані:

Приклад
class Car{

public ArrayList<Car> createPoliceCars(int count) { ArrayList<Car> result = new ArrayList<Car>();

    class PoliceCar extends Car { int policeNumber; PoliceCar(int policeNumber) { this.policeNumber = policeNumber; } }

    for(int i=0; i<count; i++) result.add(newPoliceCar(i)); return result; } }

— А навіщо такі класи потрібні?

Клас усередині методу, та ще з методами та конструкторами – це код, що дуже погано читається, хіба не так?

— Саме так. Ти абсолютно правий.

У методах можна використовувати анонімні внутрішні класи. Але є одна маленька перевага у таких класів, через що їх досить часто використовують усередині методів.

Клас, оголошений усередині методу, може використовувати локальні змінні цього методу:

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 = number; }); } return result; }
}

Але є одне обмеження – змінні можна лише «читати», змінювати їх не можна.

Тому класи, оголошені всередині методу, можуть мати доступ тільки до тих змінних методів, які позначені ключовим словом final. У прикладі вище ти можеш бачити, що я не можу відразу присвоїти змінній policeNumber значення змінної i, а спочатку зберігаю його в final-змінну number.

— Те, що можна використовувати змінні методи – це справді класна штука. Сподіваюся, я гідно оціню її. Погано тільки, що не можна змінювати змінні.

— Чому їх не можна міняти, тобі сьогодні розповість Еллі, а я піду, поки годинку подрімну.

— На добраніч, Кім. Дякую за цікавий урок.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ