관련된 상수들을 묶어 놓은 것
Java는 타입에 안전한 열거형을 제공
1. 열거형의 정의와 사용
1) 열거형의 정의 방법
enum 열거형명 { 상수명1, 상수명2, ... , 상수명n}
2) 열거형 타입의 변수 선언과 사용
enum Direction {
EAST,
SOUTH,
WEST,
NORTH
}
class Unit {
int x, y;
Direction dir; // 열거형 인스턴스 변수 선언
void init() {
dir = Direction.EAST // 열거형 Direction의 상수 EAST로 초기화
}
}
3) 열거형 상수의 비교에 ==와 compareTo() 사용
- '<', '>'와 같은 비교연산자는 사용 불가
2. 열거형의 조상
- java.lang.Enum
- 모든 열거형은 Enum의 자손이며, 아래 메서드를 제공함
메서드 | 설명 |
Class<E> getDeclaringClas() | 열거형의 Class 객체를 반환 |
String name() | 열거형 상수의 이름을 문자열로 반환 |
int ordinal() | 열거형 상수가 정의된 순서 반환(0부터 시작) |
T valueOf(Class<T> enumType.String name) | 지정된 열거형에서 name과 일치하는 열거형 상수 반환 |
- 컴파일러가 vlues(), valueOf() 메서드를 자동으로 추가해줌
메서드 | 설명 |
static E[] values() | 열거형 상수를 배열로 반환 |
static E valueOf(String name) | 열거형 상수 이름으로 문자열 상수에 대한 참조를 얻음 |
3. 열거형에 멤버 추가하기
- 불연속적인 열거형 상수의 경우 원하는 값을 괄호 안에 적음
- 괄호'()' 사용 시, 끝에 세미콜론';'과 인스턴스 변수, 생성자를 추가해야함
- 열거형의 생성자는 묵시적으로 private이므로 외부에서 객체 생성 불가
enum Direction {
EAST(1, ">"), // 여러개 추가 가능
SOUTH(2, "V"),
WEST(3, "<"),
NORTH(4, "^"); // 세미콜론 추가
private final int value; // 정수를 저장할 필드인 인스턴스 변수 추가
Direction(int value) { // 생성자 추가
this.value = value;
}
public int getValue() {
return value;
}
}
'Java' 카테고리의 다른 글
Java 스레드(thread) (0) | 2023.01.17 |
---|---|
Java 애너테이션(annotation)이란? (0) | 2023.01.17 |
[Java] 제네릭(Generics) (0) | 2023.01.10 |
Java Collections 클래스 (0) | 2023.01.09 |
Java HashMap, Hashtable (0) | 2023.01.07 |