Переопределение метода 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()
в ваших перечислениях может значительно улучшить читаемость и удобство использования вашего кода, особенно при работе с перечислениями в различных контекстах.