Переопределение метода toString()
По умолчанию, когда вы выводите объект перечисления (enum) или используете его в строковом контексте, вызывается метод toString() перечисления, который возвращает имя константы перечисления в виде строки (String). Однако вы можете переопределить метод toString(), чтобы предоставить пользовательское строковое представление для вашего перечисления.
Вот пример переопределения метода toString() в перечислении DayOfWeek:
public enum DayOfWeek {
MONDAY("Monday"),
TUESDAY("Tuesday"),
WEDNESDAY("Wednesday"),
THURSDAY("Thursday"),
FRIDAY("Friday"),
SATURDAY("Saturday"),
SUNDAY("Sunday");
private final String displayName;
DayOfWeek(String displayName) {
this.displayName = displayName;
}
@Override
public String toString() {
return displayName;
}
}
В этом примере каждая константа перечисления имеет приватное поле displayName, которое хранит пользовательское строковое представление для этой константы. Метод toString() переопределен так, чтобы возвращать значение displayName вместо имени перечисления по умолчанию.
Теперь, когда вы используете перечисление DayOfWeek в своем коде, будет использоваться пользовательское строковое представление:
DayOfWeek today = DayOfWeek.MONDAY;
System.out.println(today); // Output: Monday
Переопределение метода toString() может быть особенно полезно, когда вы хотите предоставить более удобочитаемое или описательное представление констант перечисления. Это может сделать ваш код более читаемым и легким для понимания, особенно при работе с перечислениями в пользовательских интерфейсах или при логировании/отладке.
Вот еще один пример переопределения метода toString() в перечислении Color:
public enum Color {
RED("Red", 255, 0, 0),
GREEN("Green", 0, 255, 0),
BLUE("Blue", 0, 0, 255);
private final String name;
private final int red;
private final int green;
private final int blue;
Color(String name, int red, int green, int blue) {
this.name = name;
this.red = red;
this.green = green;
this.blue = blue;
}
@Override
public String toString() {
return name;
}
// Other methods to get color properties
}
В этом примере перечисление Color имеет поле name, которое хранит пользовательское строковое представление для каждого цвета. Метод toString() переопределен так, чтобы возвращать значение name вместо имени перечисления по умолчанию.
Переопределение метода toString() в ваших перечислениях может значительно улучшить читаемость и удобство использования вашего кода, особенно при работе с перечислениями в различных контекстах.