요일은 월화수목금토일이라는 한정된 값만 가진다. 이렇게 한정된 값만 가지는 데이터 타입이 열거 타입(Enumeration Type)이다.
프로젝트를 진행할 때, 테이블의 한 컬럼 값이 한정된 값만 가진다면(YES,NO 등) Enum타입으로 설정하면 좋다.
Enum 파일이 있어야한다. 간단하게 요일을 관리하는 Day.java
파일을 만들고, 그 안에 요일들을 정해주었다.
public enum Day {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
위와 같이 만들어준 요일들은 하나하나가 문자열이 아닌 열거 객체이다.
그래서 아래와 같이 사용할 수 없다.
public class test {
public static void main(String[] args) throws IOException {
Day day1 = Day.MONDAY; // 이건 됩니다~
String day2 = Day.MONDAY; // Error!!!!!!!
}
}
String 타입 변수에 저장하려면 name()
메소드를 사용하면 된다.
public class test {
public static void main(String[] args) throws IOException {
String day = Day.MONDAY.name(); // 오류 없습니다~
}
}
그 밖에도 valueOf()
, values()
등 다른 메소드들이 있다.
valueOf()
: 문자열을 통해 동일한 문자열인 열거 객체를 리턴한다.
public class test {
public static void main(String[] args) throws IOException {
String x = "WEDNESDAY";
Day day = Day.valueOf(x);
System.out.println("day = " + day); // day = WEDNESDAY
}
}
values()
: 열거 객체들을 배열로 만들어 준다.
public class test {
public static void main(String[] args) throws IOException {
Day[] values = Day.values();
for (Day value : values) {
System.out.println("value = " + value);
}
}
}
value = MONDAY
value = TUESDAY
value = WEDNESDAY
value = THURSDAY
value = FRIDAY
value = SATURDAY
value = SUNDAY
Enum 클래스는 같은 의미를 가지는 값들을 열거할 수 있다.
public enum Day {
MONDAY("월요일"),
TUESDAY("화요일"),
WEDNESDAY("수요일"),
THURSDAY("목요일"),
FRIDAY("금요일"),
SATURDAY("토요일"),
SUNDAY("일요일");
private final String label;
private Day(String label) {
this.label = label;
}
public String getLabel() {
return label;
}
}
위와 같이 MONDAY
나 월요일
이나 영어, 한국어 차이이지 의미는 같다. 그러므로 위와 같이 설정해두면 나중에 프로젝트를 진행할 때, 값이 한국어로 들어와도 Enum으로 처리할 수 있다.
private
이기 때문에, 외부에서는 생성자를 통해 생성할 수 없다.getLabel()
메소드를 만들었다. 롬복을 사용하면 @Getter
을 사용하면 된다.getLabel()
메소드를 통해 아래와 같이 값을 받을 수 있다.
public class test {
public static void main(String[] args) throws IOException {
Day[] values = Day.values();
for (Day value : values) {
System.out.println("value = " + value.getLabel());
}
}
}
value = 월요일
value = 화요일
value = 수요일
value = 목요일
value = 금요일
value = 토요일
value = 일요일