Страницы

Поиск по вопросам

понедельник, 4 февраля 2019 г.

Преобразование индекса в соответствующий элемент перечисления

Есть перечисление с конструктором для задания индекса дня недели. Необходимо создать метод, преобразующий этот индекс в соответствующий день недели.
public enum DayOfWeek {
MONDAY(0), TUESDAY(1), WEDNESDAY(2), THURSDAY(3), FRIDAY(4), SATURDAY(5), SUNDAY(6);
int dayIndex;
DayOfWeek(int dayIndex) { setDayIndex(dayIndex); }
public int getDayIndex() { return dayIndex; }
public void setDayIndex(int dayIndex) { this.dayIndex = dayIndex; }
public static DayOfWeek valueOf (int index){ //метод для преобразования индекса дня недели в соответствующий элемент перечисления. } }
Подскажите как реализовать данный метод.


Ответ

Стоит воспользоваться YOUR_ENUM.values()[index]
Компилятор Java автоматически генерирует статический метод values() для каждого перечисления в java (вы не найдете метод values() в исходниках java).
Метод values() возвращает массив констант данного перечисление в том порядке в котором они определены. Данный метод используется при переборе элементов перечисления.
for (DayOfWeek p : DayOfWeek.values()) { System.out.printf("The day is %s, num = %d
", p, p.getDayIndex()); }
В итоге метод valueOf будет выглядеть так:
public static DayOfWeek valueOf (int index){ return DayOfWeek.values()[index]; }
В Main протестировать:
public static void main (String[] args) throws java.lang.Exception { System.out.print(DayOfWeek.valueOf(6)); }

Комментариев нет:

Отправить комментарий