logo

Java에서 문자열을 Enum으로 변환하는 방법은 무엇입니까?

Java 열거형은 고정된 상수 집합을 나타내는 강력한 데이터 유형입니다. 이는 일반적으로 객체가 취할 수 있는 특정 값 집합을 설명하는 데 사용됩니다. 때로는 문자열 그림을 열거형 값으로 변환하고 싶을 수도 있습니다. 이러한 맥락에서 우리는 Java에서 문자열을 열거형으로 변환하는 다양한 전략을 탐색하여 더 나은 이해를 위한 전체 프로그램을 제공할 것입니다.

Java의 Enum 이해:

변환 프로세스를 시작하기 전에 Java 열거형을 간략하게 요약해 보겠습니다. 열거형, 줄여서 열거형은 상수 값을 나타내는 보다 구조화된 방법을 제공하기 위해 Java 5에 도입되었습니다. 열거형 선언은 해당 열거형 유형의 변수가 사용할 수 있는 고정된 값 집합을 정의합니다. 열거형의 각 값을 열거형 상수라고 합니다.

열거형 선언의 예는 다음과 같습니다.

 public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } 

이 경우 Day는 열거형의 이름이며, 요일을 나타내는 7개의 상수가 있습니다. Enum에는 추가 필드와 메서드가 있을 수도 있으므로 단순한 상수 값보다 더 유연하고 강력해집니다.

문자열을 열거형으로 변환:

문자열 표현이 있고 이를 열거형으로 변환하려는 경우 요구 사항에 따라 다양한 전술을 따를 수 있습니다. 여기서는 이 변환을 수행하는 3가지 일반적인 방법, 즉 valueOf() 메서드 사용, 사용자 지정 매핑 사용, Enum.ValueOf() 메서드 사용에 대해 설명합니다.

방법 1: valueOf() 메서드 사용

문자열을 열거형으로 변환하는 최대 직접 방법은 열거형 자체를 통해 제공되는 valueOf() 기술을 사용하는 것입니다. 이 접근 방식은 일치하는 열거형의 이름을 문자열로 사용하고 발견되면 해당 열거형 일반을 반환합니다. 예는 다음과 같습니다.

StringToEnumExample.java

 public class StringToEnumExample { public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } public static void main(String[] args) { String dayString = 'FRIDAY'; Day day = Day.valueOf(dayString); System.out.println(day); // Output: FRIDAY } } 

산출:

 FRIDAY 

이 예에서는 valueOf() 메서드를 호출하여 문자열 'FRIDAY'를 Day 열거형으로 변환합니다. 결과는 Day.FRIDAY 열거형 상수이며 콘솔에 인쇄됩니다.

valueOf() 메소드는 대소문자를 구분하며 문자열이 열거형 상수와 일치하지 않으면 java.lang.IllegalArgumentException이 발생한다는 점에 유의하는 것이 중요합니다. 이를 처리하려면 try-catch 블록으로 변환을 래핑하여 예외를 정상적으로 처리할 수 있습니다.

방법 2: 사용자 지정 매핑 사용

어떤 경우에는 문자열 표현과 열거형 상수 사이에 사용자 지정 매핑을 수행해야 할 수도 있습니다. 이 접근 방식은 문자열 값이 열거형 상수 이름과 정확히 일치하지 않을 때 유용합니다. 예는 다음과 같습니다.

StringToEnumExample.java

 public class StringToEnumExample { // Define the Day enum with associated abbreviations public enum Day { MONDAY('Mon'), TUESDAY('Tue'), WEDNESDAY('Wed'), THURSDAY('Thu'), FRIDAY('Fri'), SATURDAY('Sat'), SUNDAY('Sun'); // Private field to store the abbreviation for each day private final String abbreviation; // Constructor to initialize the abbreviation for each enum constant Day(String abbreviation) { this.abbreviation = abbreviation; } // Getter method to retrieve the abbreviation for a specific day public String getAbbreviation() { return abbreviation; } // Custom method to convert an abbreviation string to the corresponding enum constant public static Day fromAbbreviation(String abbreviation) { for (Day day : Day.values()) { if (day.getAbbreviation().equalsIgnoreCase(abbreviation)) { return day; } } // If no match is found, throw an IllegalArgumentException throw new IllegalArgumentException('Invalid abbreviation: ' + abbreviation); } } public static void main(String[] args) { String dayString = 'Fri'; // Convert the abbreviation string to the corresponding Day enum constant Day day = Day.fromAbbreviation(dayString); System.out.println(day); // Output: FRIDAY } } 

산출:

 FRIDAY 

이 예에서 Day 열거형에는 해당 날짜의 더 짧은 문자열 표현을 나타내는 abbreviation이라는 추가 필드가 있습니다. 약어를 기반으로 변환을 수행하는 사용자 정의 메서드 fromAbbreviation()을 정의합니다. 약어가 열거형 상수와 일치하면 해당 열거형 상수가 반환됩니다. 그렇지 않으면 예외가 발생합니다.

방법 3: Enum.valueOf() 메서드 사용

세 번째 방법은 문자열을 열거형 상수로 변환하는 범용 방법인 Enum.valueOf() 메서드를 사용하는 것입니다. 예는 다음과 같습니다.

StringToEnumExample.java

 public class StringToEnumExample { // Define the Day enum with seven constants representing the days of the week public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } public static void main(String[] args) { // Define the string representation of the day String dayString = 'SUNDAY'; // Convert the string to the corresponding Day enum constant using Enum.valueOf() Day day = Enum.valueOf(Day.class, dayString); // Print the value of the day System.out.println(day); // Output: SUNDAY } } 

산출:

 SUNDAY 

이 예에서는 열거형 클래스(Day.class)와 문자열 표현(dayString)을 Enum.valueOf() 메서드에 전달합니다. 발견되면 해당 열거형 상수를 반환하고, 일치하는 항목이 없으면 IllegalArgumentException을 발생시킵니다.

이 기사에서는 Java에서 문자열을 열거형으로 변환하는 다양한 방법을 살펴보았습니다. valueOf() 메서드 사용, 사용자 지정 매핑 생성, Enum.valueOf() 메서드 활용에 대해 논의했습니다. 요구 사항에 따라 가장 적절한 접근 방식을 선택할 수 있습니다. valueOf() 메서드를 사용할 때 예외를 처리하고 문자열 값이 열거형 상수 이름과 직접 일치하지 않는 경우 사용자 지정 매핑을 고려하세요.