Трансформируем enum в класс
В данной задаче реализация статического метода values() в public class Month несколько отличается от такого же метода в enum...
Кто нибудь заметил, что предложенная авторами реализация не позволяет выводить в консоль строковое содержание массива?
P.S.
Естественно не работают и все производные:
System.out.println(Month.JANUARY.toString());
System.out.println(Month.values()[3]);
System.out.println(months[2]);
Victor Zav
33 уровень
Реализация метода values()
Решен
Комментарии (12)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
НурланРаботает в ищу работу
17 марта 2022, 02:54
Да, для вывода названия месяцев, нужно допиливать предложенный класс из решения.
public class Month {
public static final Month JANUARY = new Month(0,"JANUARY");
public static final Month FEBRUARY = new Month(1,"FEBRUARY");
public static final Month MARCH = new Month(2,"MARCH");
public static final Month APRIL = new Month(3,"APRIL");
public static final Month MAY = new Month(4,"MAY");
public static final Month JUNE = new Month(5,"JUNE");
public static final Month JULY = new Month(6,"JULY");
public static final Month AUGUST = new Month(7,"AUGUST");
public static final Month SEPTEMBER = new Month(8,"SEPTEMBER");
public static final Month OCTOBER = new Month(9,"OCTOBER");
public static final Month NOVEMBER = new Month(10,"NOVEMBER");
public static final Month DECEMBER = new Month(11,"DECEMBER");
private static final Month[] VALUES = {JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER};
private final int value;
private final String name;
private Month(int value, String name) {
this.value = value;
this.name = name;
}
public int ordinal() {
return value;
}
public String getName() {
return name;
}
public static Month[] values() {
return VALUES;
}
}
Ну а дальше все просто.
Month[] months = Month.values();
for (Month month: months) {
System.out.println(month.getName());
}
или
System.out.println(months[4].getName());
+1
Victor Zav
17 марта 2022, 19:00
Еще можно что то типа:
....
@Override
public String toString() {
//return "Month is: {" + "name='" + month + '\'' + ", value=" + value + '}';
//return "Month is: {" + "name: " + month + ", value: " + value + '}';
return month;
}
....
psvm
Month[] months = Month.values();
System.out.println("\nArrays.toString: " + Arrays.toString(months));
....
0
Денис Enterprise Java Developer
9 февраля 2022, 11:26
Было бы не плохо приложить "предложенная авторами реализация " к вопросу, а то у меня именно сегодня экстрасенсорика барахлить начала, надо в сервис сдавать.
0
Victor Zav
10 февраля 2022, 01:23
Вопрос по задачеТрансформируем enum в класс // 14 уровень, 6 лекция
предлагаемый вторами механизм трансформации enum в public class:
enum Day
{
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
легким движением руки превращается в...
public class Day
{
public static final Day MONDAY = new Day(0);
public static final Day TUESDAY = new Day(1);
public static final Day WEDNESDAY = new Day(2);
public static final Day THURSDAY = new Day(3);
public static final Day FRIDAY = new Day(4);
public static final Day SATURDAY = new Day(5);
public static final Day SUNDAY = new Day(6);
private static final Day[] array = {MONDAY, TUESDAY,
WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY};
private final int value;
private Day (int value)
{
this.value = value;
}
public int ordinal()
{
return this.value;
}
public static Day[] values()
{
return array;
}
}
P.S.
В задаче enum Month //поэтому значения месяцы
0
KIRAРазработчик в prosv.ruExpert
10 февраля 2022, 07:08
Я конечно не эксперт, но это по моему дни недели, а не месяца
За вывод в консоль отвечает метод toString(), в данном задании его реализовать не просят, а без его переопределения будет использоваться реализация у Object
classname@HashCode_in_Hexadeciaml_form
toString()
0
Victor Zav
10 февраля 2022, 08:11
enum Day это из лекции, в задании enum Month.
Вопрос в том насколько корректна подобная модель // трансформации enum в public class.
модель какая-то куцая... логика понятна, но с реализацией проблемы..
Может быть нужно дописать что то вроде второго конструктора и дополнительного геттера, чтобы получить возможность полноценного вывода строковых значений...
В общем хотелось бы узнать мнения экспертов //более подробно 😎
0
KIRAРазработчик в prosv.ruExpert
10 февраля 2022, 08:36полезный
Может быть нужно дописать что то вроде второго конструктора и дополнительного геттера, чтобы получить возможность полноценного вывода строковых значений...
За вывод отвечает метод toString()
+1
Денис Enterprise Java Developer
10 февраля 2022, 08:53полезный
Подпишусь под словами Киры, хочешь выводить строчное значение класса - реализуй toString. В остальном предложенный класс работает схожим образом на первый взгляд.
Хотя реализация конечно не ищет простых путей, вместо объявления приватного поля типа имя и реализации работы с ним предлагается уйти в рефлексию что-ли? Оригинально :)
Ну и да, курс Syntax pro открыт не у всех (тот в котором 20 уровней). У тех кто отучился давно так точно не открыт и открыт не будет :) Мы можем без подписки помогать, но не проходить материал.
+1
Victor Zav
11 февраля 2022, 00:39
Спасибо! 👍
0
Victor Zav
11 февраля 2022, 00:41
У меня 20 открыто... все равно не хватает... 😎
0
Денис Enterprise Java Developer
11 февраля 2022, 08:58
Я к тому, что если курс, лекция или задача не открыты - я не вижу условие. Даже если зайду на ее страничку.
0
Victor Zav
12 февраля 2022, 05:47
Понятно
Если будут появляться вопросы, буду более детально описывать 😎
+1