toString() 메서드를 사용하여 String 표현 사용자 정의
name() 메서드는 enum 상수의 정확한 이름을 제공하지만, 때로는 enum 이 문자열로 표시되는 방식을 사용자 정의하고 싶을 수 있습니다. 이 경우 toString() 메서드를 재정의하는 것이 유용할 수 있습니다.
EnumToStringExample.java라는 새 파일을 생성해 보겠습니다.
public class EnumToStringExample {
// Define an enum with a custom string representation
enum Course {
JAVA("Java Programming"),
ANDROID("Android Development"),
HTML("HTML Basics"),
CSS("CSS Styling");
// Field to store the custom string description
private String courseName;
// Constructor to initialize the custom string
Course(String courseName) {
this.courseName = courseName;
}
// Override toString() to return the custom string
@Override
public String toString() {
return this.courseName;
}
}
public static void main(String[] args) {
System.out.println("Custom string representation using toString():");
// Print each course using the overridden toString() method
for (Course course : Course.values()) {
System.out.println(course.name() + " => " + course.toString());
}
// Direct use of toString() (happens automatically when printing an object)
Course myCourse = Course.ANDROID;
System.out.println("\nMy course is: " + myCourse);
// Comparing the two methods
System.out.println("\nComparison between name() and toString():");
System.out.println("name(): " + myCourse.name());
System.out.println("toString(): " + myCourse.toString());
}
}
이 코드를 컴파일하고 실행해 보겠습니다.
cd ~/project/enum_examples
javac EnumToStringExample.java
java EnumToStringExample
다음과 같은 출력을 볼 수 있습니다.
Custom string representation using toString():
JAVA => Java Programming
ANDROID => Android Development
HTML => HTML Basics
CSS => CSS Styling
My course is: Android Development
Comparison between name() and toString():
name(): ANDROID
toString(): Android Development
이 예제에서:
- 문자열 매개변수를 허용하는 생성자를 사용하여 enum 을 정의했습니다.
- 각 enum 상수는 사용자 정의 문자열 설명으로 초기화됩니다.
- 이 사용자 정의 문자열을 반환하도록
toString() 메서드를 재정의했습니다.
- enum 을 직접 출력하면 Java 는 자동으로
toString() 메서드를 호출합니다.
이 접근 방식을 사용하면 enum 상수의 사용자 친화적이거나 형식이 지정된 문자열 표현을 제공할 수 있으며, 이는 다음과 같은 경우에 유용할 수 있습니다.
- 사용자 인터페이스에서 enum 표시
- 더 읽기 쉬운 로그 메시지 생성
- 형식이 지정된 보고서 생성
- 애플리케이션 국제화
name() 메서드는 여전히 원래 상수 이름을 반환하는 반면, toString()은 사용자 정의 문자열을 반환하는 것을 확인하십시오.