특징
장점
- 열거체를 비교할 때 실제 값뿐만 아니라 타입까지도 체크한다.
- 열거체의 상숫값이 재정의되더라도 다시 컴파일할 필요가 없다.
열거체의 정의 및 사용
//원형
enum 열거체이름 { 상수1이름, 상수2이름, ... }
열거체이름.상수이름;
//예시
enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
Rainbow.VIOLET;
열거체의 상숫값 정의 및 추가 (class처럼 사용하기)
enum Rainbow {
RED(3), ORANGE(10), YELLOW(21), GREEN(5), BLUE(1), INDIGO(-1), VIOLET(-11);
private final int value;
Rainbow(int value) { this.value = value; }
public int getValue() { return value; }
}
values() 메소드
- 해당 열거체의 모든 상수를 저장한 배열을 생성하여 반환한다.
- 자바의 모든 열거체에 컴파일러가 자동으로 추가해 주는 메소드다.
- 사용 예시
enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
public class Enum01 {
public static void main(String[] args) {
Rainbow[] arr = Rainbow.values();
for (Rainbow rb : arr) {
System.out.println(rb);
}
}
}
valueOf() 메소드
- 전달된 문자열과 일치하는 해당 열거체의 상수를 반환한다.
- 사용 예시
enum Rainbow { RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET }
public class Enum02 {
public static void main(String[] args) {
Rainbow rb = Rainbow.valueOf("GREEN");
System.out.println(rb);
}
}
ordinal() 메소드
- 해당 열거체 상수가 열거체 정의에서 정의된 순서(0부터 시작)를 반환한다.
- 반환되는 값은 열거체 정의에서 해당 열거체 상수가 정의된 순서다.
- 상숫값 자체가 반환되는 것이 아니다.
name() 메소드