enum 클래스 2

장숭혁·2023년 11월 18일
0

TIL작성

목록 보기
20/60

열거형의 생성자

  • 열거형은 switch문과 자주 쓰인다.
enum Job{

    cop(), fireFighter(), docter(), teacher();

    public void findJob(){
        switch(Job.cop){
            case cop :
                System.out.println("경찰관입니다");
                break;
            case fireFighter :
                System.out.println("소방관입니다");
                break;
            case docter :
                System.out.println("의사입니다");
                break;
            case teacher :
                System.out.println("선생님입니다");
                break;
        }
    }
} 
  • 코드량을 아낄 수 있고 가독성도 좋아진다.
1.  열거형의 생성자는 언제 사용할까?

열거형 상수는 생성자를 통해 초기화 될 수 있다.

  • 상수에 대한 초기 데이터를 설정할 수 있다.

  • 상수의 동작 변경을 할때 사용한다. 이를 통해 상수가 다른 방식으로 동작하도록 설정할 수 있다.

  • 상수에 필요한 정보를 추가적으로 제공할 수 있다.

    public enum TrafficSignal {
       RED("Stop") {
           @Override
           public void action() {
               System.out.println("Stop the vehicle!");
           }
       },
       YELLOW("Get ready") {
           @Override
           public void action() {
               System.out.println("Prepare to stop or go.");
           }
       },
       GREEN("Go") {
           @Override
           public void action() {
               System.out.println("You can go now.");
           }
       };
    
       private final String message;
    
       TrafficSignal(String message) {
           this.message = message;
       }
    
       public abstract void action();
    
       public String getMessage() {
           return message;
       }
    }
    // 사용 예시
    public class Main {
       public static void main(String[] args) {
           TrafficSignal redSignal = TrafficSignal.RED;
           System.out.println(redSignal.getMessage()); // "Stop" 출력
           redSignal.action(); // "Stop the vehicle!" 출력
    
           TrafficSignal yellowSignal = TrafficSignal.YELLOW;
           System.out.println(yellowSignal.getMessage()); // "Get ready" 출력
           yellowSignal.action(); // "Prepare to stop or go." 출력
    
           TrafficSignal greenSignal = TrafficSignal.GREEN;
           System.out.println(greenSignal.getMessage()); // "Go" 출력
           greenSignal.action(); // "You can go now." 출력
       }
    }
    
     
  • 생성자를 설정하여 열거형에 상수를 정의할 수 있다.

    1. RED의 상수를 "Stop"으로 정의하고 나머지 같은 방식으로 YELLOW, GREEN을 정의한다.
    2. 생성자를 만들고 실행문에서 열거형을 클래스 선언하듯 선언을 하고 해당 상수를 주입하는 식으로 만들어 그 안에서 메소드를 사용한다.
  • enum 열거형 연습

    for (SeasonMonth month : SeasonMonth.values()) {
              System.out.println(month.name() + 
    " is in " + month.getSeason() + " and has " + month.getDays() + " days.");
          }
public enum SeasonMonth {
   JANUARY(Season.WINTER, 31),
   FEBRUARY(Season.WINTER, 28),
   MARCH(Season.SPRING, 31),
   APRIL(Season.SPRING, 30),
   MAY(Season.SPRING, 31),
   JUNE(Season.SUMMER, 30),
   JULY(Season.SUMMER, 31),
   AUGUST(Season.SUMMER, 31),
   SEPTEMBER(Season.FALL, 30),
   OCTOBER(Season.FALL, 31),
   NOVEMBER(Season.FALL, 30),
   DECEMBER(Season.WINTER, 31);

   private final Season season;
   private final int days;

   SeasonMonth(Season season, int days) {
       this.season = season;
       this.days = days;
   }

   public Season getSeason() {
       return season;
   }

   public int getDays() {
       return days;
   }
}
 public class Main {
   public static void main(String[] args) {
       

       for (SeasonMonth month : SeasonMonth.values()) {
           System.out.println(month.name() + " is in " + month.getSeason() + " and has " + month.getDays() + " days.");
       }
   }
}
 
 결과문
 JANUARY is in WINTER and has 31 days.
FEBRUARY is in WINTER and has 28 days.
MARCH is in SPRING and has 31 days.
APRIL is in SPRING and has 30 days.
MAY is in SPRING and has 31 days.
JUNE is in SUMMER and has 30 days.
JULY is in SUMMER and has 31 days.
AUGUST is in SUMMER and has 31 days.
SEPTEMBER is in FALL and has 30 days.
OCTOBER is in FALL and has 31 days.
NOVEMBER is in FALL and has 30 days.
DECEMBER is in WINTER and has 31 days.
profile
코딩 기록

0개의 댓글

관련 채용 정보