А как компилятор понимает, что нужно выводить именно объект под индексом 0, а не тупо 0 int index = month == Month.DECEMBER ? 0 : month.ordinal() + 1; return Month.values()[index];