Есть перечисление с конструктором для задания индекса дня недели.
Необходимо создать метод, преобразующий этот индекс в соответствующий день недели.
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));
}
Комментариев нет:
Отправить комментарий