개발이야기/Java

[Java] enum(Enumeration) 사용방법, 예제, 활용방법, 장점

후린개발자 2024. 7. 3.
반응형

enum은 열거형(Enumeration)의 줄임말로, Java에서는 특정한 상수 집합을 정의하는 데 사용됩니다. 
여러 개의 관련된 상수들을 한 곳에 모아서 정의하고 사용할 수 있게 해주는 구조입니다. enum은 코드를 더 읽기 쉽고 유지보수하기 쉽게 만들어줍니다.
 

enum의 특징

-상수 집합: enum은 관련된 상수들을 한 곳에 모아 정의합니다. 상수는 고유의 이름을 가집니다.

-정의된 상수 외의 값 사용 불가: enum에 정의된 상수 외의 값을 직접 설정할 수 없습니다.

-강력한 타입 체크: 컴파일 시간에 enum 타입의 변수가 정의된 상수 중 하나여야 함을 보장하여 타입 안정성(type safety)을 높입니다.

-추가적인 메서드와 필드 포함: 상수는 생성자, 메서드, 필드를 가질 수 있어서 보다 복잡한 상수의 동작을 정의할 수 있습니다.
 

enum의 장점

-가독성: 관련된 상수를 하나의 그룹으로 묶어서 코드의 가독성을 높여줍니다.

-유지보수성: enum을 사용하면 코드에서 사용되는 상수들을 중앙에서 관리할 수 있어서 유지보수가 쉬워집니다.

-타입 안정성: 컴파일러가 enum 타입의 값의 유효성을 검사하여 런타임 오류를 줄여줍니다.

-추가적인 기능: enum은 각 상수에 메서드와 필드를 추가하여 복잡한 동작을 정의할 수 있습니다.
 

소스코드

//enum 정의
enum Day {
 SUNDAY("Family day", "일요일"),
 MONDAY("Start of the work week", "월요일"),
 TUESDAY("Productive day", "화요일"),
 WEDNESDAY("Midweek", "수요일"),
 THURSDAY("Almost Friday", "목요일"),
 FRIDAY("End of the work week", "금요일"),
 SATURDAY("Relaxing day", "토요일");

 private final String description;
 private final String koreanName;

 // enum 생성자
 Day(String description, String koreanName) {
     this.description = description;
     this.koreanName = koreanName;
 }

 // enum 메서드
 public String getDescription() {
     return description;
 }

 public String getKoreanName() {
     return koreanName;
 }

 // 순서를 반환하는 메서드
 public int getOrder() {
     return this.ordinal() + 1; // ordinal() 메서드는 enum 상수의 순서를 반환합니다 (0부터 시작)
 }

 // 한글 요일 이름을 반환하는 메서드
 public String getLocalizedDayName() {
     return koreanName;
 }

 @Override
 public String toString() {
     return this.name() + " (" + this.getDescription() + ")";
 }
}

public class TEST {

 public static void main(String[] args) throws Exception {
     // enum 사용
     Day today = Day.MONDAY;

     // switch문을 사용하여 enum 처리
     switch (today) {
         case MONDAY:
             System.out.println("Today is Monday. Start of the work week!");
             break;
         case FRIDAY:
             System.out.println("Today is Friday. End of the work week!");
             break;
         case SATURDAY:
         case SUNDAY:
             System.out.println("Today is the weekend!");
             break;
         default:
             System.out.println("It's a regular workday.");
             break;
     }
     System.out.println("--------------------------------------");
     // enum 값 출력
     for (Day day : Day.values()) {
         System.out.println(day);
     }

     // enum의 메서드 사용
     System.out.println("Today is a " + today.getDescription());
     System.out.println("--------------------------------------");

     // enum의 순서 메서드 사용
     System.out.println("Order of " + today + " is " + today.getOrder());
     System.out.println("--------------------------------------");
     // 한글 요일 이름 출력
     System.out.println("Today in Korean: " + today.getLocalizedDayName());
 }
}

 
 
1) Day Enum 정의

  • Day enum은 일주일의 각 요일을 상수로 정의합니다.
  • 각 상수는 description과 koreanName이라는 두 개의 인스턴스 변수를 가집니다.
  • Day enum은 생성자를 통해 description과 koreanName을 초기화합니다.
  • getDescription(), getKoreanName(), getOrder(), getLocalizedDayName() 등의 메서드를 통해 각 상수의 속성에 접근할 수 있습니다
  • toString() 메서드는 각 상수의 이름과 description을 문자열로 반환합니다.


2) main 메서드

  • today 변수를 통해 현재 요일을 지정하고, switch 문을 사용하여 각 요일에 따른 메시지를 출력합니다.
  • Day.values()를 사용하여 모든 enum 상수를 순회하며 출력합니다.
  • getDescription(), getOrder(), getLocalizedDayName() 등의 메서드를 호출하여 각 요일의 정보를 출력합니다.

console.log

반응형

댓글

💲 추천 글