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;
}
}
}
열거형 상수는 생성자를 통해 초기화 될 수 있다.
상수에 대한 초기 데이터를 설정할 수 있다.
상수의 동작 변경을 할때 사용한다. 이를 통해 상수가 다른 방식으로 동작하도록 설정할 수 있다.
상수에 필요한 정보를 추가적으로 제공할 수 있다.
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." 출력
}
}
생성자를 설정하여 열거형에 상수를 정의할 수 있다.
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.