Java Enum 문자열 표현 마스터: 기본값, 오버라이딩, 고급 패턴
Java Enum 문자열 표현 마스터하기
Java enum이 문자열 값을 노출하는 방식, 오버라이딩으로 커스터마이징하는 법, 깔끔하고 유지보수하기 좋은 코드 모범 사례를 알아봅니다.
기본 문자열 표현
Java enum 타입은 각 상수에 자동으로 문자열 표현을 제공합니다. 기본적으로 toString()이나 name() 호출 시 상수 식별자 반환. 다음 예제가 이 동작 시연:
enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } class Main { public static void main(String[] args) { System.out.println("string value of SMALL is " + Size.SMALL.toString()); System.out.println("string value of MEDIUM is " + Size.MEDIUM.name()); } }
출력
string value of SMALL is SMALL string value of MEDIUM is MEDIUM
출력에서 기본 문자열 값이 enum 상수 이름과 같음 확인.
기본 문자열 값 오버라이딩
name()은 final이라 오버라이딩 불가하지만 toString()은 커스터마이징 가능. 각 상수가 더 사용자 친화적 또는 도메인 특화 문자열 제시 가능. 아래 각 상수가 개별적으로 toString() 오버라이딩하는 간결 예제:
enum Size { SMALL { @Override public String toString() { return "The size is small."; } }, MEDIUM { @Override public String toString() { return "The size is medium."; } }; } class Main { public static void main(String[] args) { System.out.println(Size.MEDIUM.toString()); } }
출력
The size is medium.
이 예제에서 각 enum 상수가 자체 toString() 구현 제공으로 풍부한 텍스트 출력 가능.
Enum 문자열 고급 패턴
더 큰 enum이나 다중 속성 필요 시 생성자 기반 접근이 코드 정리:
enum Size { SMALL("S", "The size is small."), MEDIUM("M", "The size is medium."), LARGE("L", "The size is large."); private final String code; private final String description; Size(String code, String description) { this.code = code; this.description = description; } @Override public String toString() { return description; } public String getCode() { return code; } }
생성자 사용으로 데이터 중앙화, enum 가독성 유지. toString() 유연성 유지, 추가 게터로 원시 값 노출 시 사용.
중요 참고사항
• name()은 java.lang.Enum에 정의된 final 메서드로 오버라이딩 불가. Java Enum API
• toString() 오버라이딩은 System.out.println(), 직렬화, enum 문자열 표현에 의존하는 모든 코드에 영향. 계약 기대값 깨지지 않게 신중히 사용.
Enum 설계 패턴 깊은 통찰은 enum 문자열 생성 모범 사례 가이드 참조.