enum 타입
- 한정된 상수로 구성되는 데이터 타입
- 클래스와 유사한 형태로 정의
- 별도의 값을 지정하지 않고 상수 자체를 그대로 사용 = enum 상수
< 기본 정의 문법 >
[제한자] enum 타입명 { // 클래스 정의와 유사함
상수1, 상수2, ..., 상수n}
<기본 사용 문법>
enum타입명.상수명
// enum 타입을 사용하여 변수 선언 가능(= 클래스 타입과 동일)
Week today; // enum 타입인 Week 타입을 선언
// => Week 타입 변수 today 는 Week 타입 내의 enum 상수만 저장 가능
today = Week.FRIDAY;
System.out.println(today); // toString() 오버라이딩 되어 있음
System.out.println(today instanceof Object); // Object 클래스 상속받음
System.out.println(today instanceof Enum); // Enum 클래스 상속받음
// if문을 사용하여 enum 타입의 값 비교(일반 상수 비교 방법과 동일)
if(today == Week.FRIDAY) {
System.out.println("금요일!");
} else if(today == Week.SATURDAY) {
System.out.println("토요일!");
} else if(today == Week.SUNDAY) {
System.out.println("일요일!");
}
// switch 문에 enum 타입 객체 전달 가능
switch(today) {
case MONDAY :
System.out.println("월요일!"); break;
case TUESDAY :
System.out.println("화요일!"); break;
case WEDNESDAY :
System.out.println("수요일!"); break;
case THURSDAY :
System.out.println("목요일!"); break;
case FRIDAY :
System.out.println("금요일!"); break;
case SATURDAY :
System.out.println("토요일!"); break;
case SUNDAY :
System.out.println("일요일!");
}
// 일반적인 상수는 동일하지 않은 종류라도 데이터타입이 같으면 비교 가능
if(CAR_COLOR_RED == GEAR_TYPE_AUTO) {}
// 그러나, enum 타입은 enum 타입 내의 상수끼리만 비교 가능하며
// 다른 타입과의 비교 자체가 불가능하므로 더 안전하다!
// if(Week.FRIDAY == GEAR_TYPE_AUTO) {} // 오류 발생!
}
}
// enum 타입 정의 - CarColor
// 상수 목록 : CREAM_WHITE, PERFECT_BLACK, DARK_RED
enum CarColor {
CREAM_WHITE, PERFECT_BLACK, DARK_RED
}
// enum 타입 정의 - Season
// 상수 목록 : SPRING, SUMMER, FALL, WINTER
enum Season {
SPRING, SUMMER, FALL, WINTER
}
'develop > Java' 카테고리의 다른 글
멀티 쓰레드 (0) | 2021.04.19 |
---|---|
Wrapper 클래스 (0) | 2021.04.18 |
예외(Exception) (0) | 2021.04.12 |
중첩 클래스 (0) | 2021.04.12 |
제네릭(Generic, 일반화) (1) | 2021.04.05 |