관련된 상수들을 같이 묶어 놓은 것. Java는 타입에 안전한 열거형을 제공
자동으로 값이 매겨진다 0, 1, 2, 3
enum 열거형이름 { 상수명1, 상수명2, ... }
enum Direction {EAST, SOUTH, WEST, NORTH}
class Unit {
int x, y; // 유닛의 위치
Direction dir; // 열거형 인스턴스 변수를 선언
void init() {
dir = Direction.EAST; // 유닛의 방향을 EAST로 초기화
}
}
copareTo는 뺄셈. 왼쪽이 크면 양수 같으면 0 오른쪽이 크면 음수.
if(dir==Direction.EAST) {
x++;
} else if (dir > Direction.WEST) { // 에러. 열거형 상수에 비교연산자 사용불가
...
} else if (dir.compareTo(Direction.WEST) > 0) { // compareTo()는 기능
메서드 | 설명 |
---|---|
Class<E> getDeclaringClass() | 열거형의 Class객체를 반환한다. |
String name() | 열거형 상수의 이름을 문자열로 반환한다. |
int ordinal() | 열거형 상수가 정의된 순서를 반환한다.(0부터 시작) |
T valueOf(Class<T> enumType, String name) | 지정된 열거형에서 name과 일치하는 열거형 상수를 반환한다. |
static E[] values()
static E valueOf(String name)
Direction[] dArr = Direction.values();
for(Direction d : dArr)
System.out.printf("%s=%d%n", d.name(), d.ordinal());
Direction d = Direction.valueOf("WEST");
System.out.println(d); // WEST
System.out.println(Direction.WEST==Direction.valueOf("WEST")); // true
enum Direction { EAST(1), SOUTH(5), WEST(-1), NORTH(10) }
enum Direction {
EAST(1), SOUTH(5), WEST(-1), NORTH(10); // 끝에 ';'를 추가해야 한다.
private final int value; // 정수를 저장할 필드를 추가
Direction(int value) {this.value = value;} // 생성자를 추가
public int getValue() {return value;}
Direction d = new Direction(1); // 에러. 열거형의 생성자는 외부에서 호출불가
2개도 가능
enum Direction {
EAST(1, ">"), SOUTH(5, "V"), WEST(-1, "<"), NORTH(10, "^");
private final int value; // 정수를 저장할 필드를 추가
private final String symbol; // 2개니까 이것도 2개
Direction(int value, String symbol) {
this.value = value;
this.symbol = symbol;
} // 생성자를 추가