Треки
/
Java
Java
/
Салабус
/
Переліки
Пе

Переліки у Java

12 вправ

Про концепцію Переліки

Перелічуваний тип - це особливий тип даних, який дає змінній змогу набувати одну з наперед визначених констант. Змінна повинна дорівнювати одному з визначених для неї значень. Поширені приклади: сторони світу за компасом (значення NORTH, SOUTH, EAST і WEST) та дні тижня.

Оскільки це константи, назви полів перелічуваного типу записують великими літерами.

Визначення перелічуваного типу

У мові програмування Java перелічуваний тип визначають за допомогою ключового слова enum. Наприклад, перелічуваний тип для днів тижня визначають так:

public enum DayOfWeek {
    SUNDAY,
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY
}

Перелічувані типи варто використовувати щоразу, коли потрібно представити фіксований набір констант. Це стосується як природних перелічуваних типів, наприклад планет Сонячної системи, так і наборів даних, усі можливі значення яких відомі під час компіляції, наприклад пунктів меню, прапорців командного рядка тощо.

Використання перелічуваного типу

Ось код, який показує, як використати перелік DayOfWeek, визначений вище:

public class Shop {
    public String getOpeningHours(DayOfWeek dayOfWeek) {
        switch (dayOfWeek) {
            case MONDAY:
            case TUESDAY:
            case WEDNESDAY:
            case THURSDAY:
            case FRIDAY:
                return "9am - 5pm";
            case SATURDAY:
                return "10am - 4pm"
            case SUNDAY:
                return "Closed.";
        }
    }
}
var shop = new Shop();
shop.getOpeningHours(DayOfWeek.WEDNESDAY);
// => "9am - 5pm"

Додавання методів і полів

Перелічувані типи в мові програмування Java значно потужніші за свої аналоги в інших мовах. Оголошення enum визначає клас (який називають перелічуваним типом). Тіло класу-переліку може містити методи та інші поля:

public enum Rating {
    GREAT(5),
    GOOD(4),
    OK(3),
    BAD(2),
    TERRIBLE(1);

    private final int numberOfStars;

    Rating(int numberOfStars) {
        this.numberOfStars = numberOfStars;
    }

    public int getNumberOfStars() {
        return this.numberOfStars;
    }
}

Виклик методу getNumberOfStars на члені перелічуваного типу Rating:

Rating.GOOD.getNumberOfStars();
// => 4

Вбудовані методи

Компілятор автоматично додає деякі спеціальні методи, коли створює перелік.

Наприклад, вони мають статичний метод values, який повертає масив з усіма значеннями переліку в порядку їх оголошення:

for (DayOfWeek dayOfWeek : DayOfWeek.values()) {
    System.out.println(dayOfWeek.toString());
}

Наведений вище фрагмент надрукує таке:

SUNDAY
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY

Компілятор також додає статичний метод valueOf, який повертає члена переліку за його назвою:

DayOfWeek.valueOf("SUNDAY");
// => DayOfWeek.SUNDAY
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці

Вивчити концепцію Переліки