enum의 name()과 toString()은 모두 Enum의 값을 string으로 표현한다.
그렇다면 두 메소드의 차이점은 무엇일까?
name()과 toString()의 주요 차이점은 메소드의 재정의 가능 여부이다.
name()은 final 메소드이므로 재정의할 수 없지만 toString()은 재정의가 가능하다.
public enum WeekDay {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY;
public String toString() {
return name().charAt(0) + name().substring(1).toLowerCase();
}
}
예를 들어 위와 같이 코드를 작성하면
WeekDay.MONDAY.name()은 "MONDAY"를 반환하고
WeekDay.MONDAY.toString()은 "Monday"를 반환한다.