본문 바로가기

develop/Java

enum 타입

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