Page 276 - 6253
P. 276
Додаток Б
Перерахування в Java (java enum)
Програмуючи ми часто стикаємося з необхідністю обмежити безліч
допустимих значень для деякого типу даних. Так, наприклад, день тижня може
мати 7 різних значень, місяць в році - 12, а час року - 4. Для вирішення подібних
завдань в багатьох мовах програмування зі статичної типізацією передбачений
спеціальний тип даних - перерахування (enum). У Java перерахування з'явилося не
відразу. Спеціалізована мовна конструкція enum була введена починаючи з версії
1.5. До цього моменту програмісти використовували інші методи для реалізації
перерахувань.
Опишемо за допомогою enum тип даних для зберігання пори року:
enum Season { WINTER, SPRING, SUMMER, AUTUMN }
Приклад використання:
Season season = Season.SPRING;
if (season == Season.SPRING)
season = Season.SUMMER;
System.out.println(season);
В результаті виконання якого на консоль буде виведено SUMMER.
Оголошуючи enum ми неявно створюємо клас похідний від java.lang.Enum.
Умовно конструкція enum Season {...} еквівалентна
class Season extends java.lang.Enum {...}.
І хоча явно успадковуватися від java.lang.Enum нам не дозволяє компілятор,
все ж в тому, що enum успадковується, легко переконатися за допомогою reflection:
System.out.println(Season.class.getSuperclass());
На консоль буде виведено:
class java.lang.Enum
Власне спадкування за нас автоматично виконує компілятор Java.
Еnum-клас успадковує java.lang.Enum, який містить ряд методів корисних для
всіх перерахувань. приклад:
Season season = Season.WINTER;
275