1. 열거형이란?
- 서로 연관된 상수들의 집합
2. 열거형 사용 이유
- 상수 이름 중복을 피할 수 있다. -> 이유?
- 타입 안정성을 확보할 수 있다. -> 이유?
- 여러 상수들을 선언하고 관리하기 편리하다.
- 코드 가독성이 확보된다.
3. 열거형 사용
- switch 문 사용시 case 문에 열거형 이름은 적지 않고 상수 이름만 적는다.
- 열거 상수들은 모두 열거형 타입의 객체이며 따로 할당하지 않아도 자동으로 0부터 차레로 정수값이 할당된다.
- 모든 열거형의 조상은 java.lang.Enum 클래스이다.
열거형 메서드
메서드 | 설명 |
---|
String name() | 열거 객체의 상수 이름을 문자열로 반환 |
int ordinal() | 열거 객체가 정의된 순서를 반환 |
int comapreTo(비교값) | 전달받은 인자와 비교하여 순번을 대소비교하여 반환 |
열거타입 valueOf(String name) | 전달받은 인자의 열거 객체 반환 |
열거배열 values() | 모든 열거 객체들을 배열로 반환 |
enum Seasons {
// 3-2
SPRING, // 0
SUMMER, // 1
FALL, // 2
WINTER // 3
}
enum Level {LOW, MEDIUM, HIGH}
public class EnumExample {
public static void main(String[] args) {
Seasons favoriteSeasons = Seasons.SPRING;
System.out.println(favoriteSeasons);
System.out.println(Seasons.SPRING);
Level level = Level.MEDIUM;
Level[] allLevels = Level.values(); // 3-3
for (Level elem : allLevels) {
System.out.printf("%s=%d%n", elem.name(), elem.ordinal()); // 3-3
}
Level findLevel = Level.valueOf("LOW"); // 3-3
System.out.println(findLevel);
System.out.println(Level.LOW == Level.valueOf("LOW")); // 3-3
switch (level) {
case LOW: // 3-1
System.out.println("낮은 레벨");
break;
case MEDIUM:
System.out.println("중간 레벨");
break;
case HIGH:
System.out.println("높은 레벨");
break;
}
}
}