Методе name() в Enum и нужен ли он вообще?
public enum Colors {
BLACK, WHITE, RED, BLUE, GREEN
}
public class Test {
public static void main(String[] args) {
Colors color1 = Colors.RED;
System.out.println(color1);
System.out.println(color1.name());
}
}
Зачем вообще тогда нам нужен name(), если и без него выдает тоже самый результат в консоли.
Ответы (1 шт):
Автор решения: Дмитрий Никифоров
→ Ссылка
Внутри println у объектов неявно вызывается toString().
По умолчанию toString() и name() у enum возвращают одну и ту же строку, поэтому у вас результат одинаковый.
Но toString() вы можете переопределить как хотите, а name() нет, так как он final в абстрактном классе java.lang.Enum, от которого наследуются enum-ы.
public enum Colors {
BLACK, WHITE, RED, BLUE, GREEN;
// Нельзя:
//@Override
//public String name() {
// return "my string";
//}
// Можно:
@Override
public String toString() {
return "my string";
}
}