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
   271   272   273   274   275   276   277   278   279   280   281