출처 - Java의 정석 기초편 (남궁 성)
1. 열거형
- 관련된 상수들 묶어놓은 것
- Java 열거형: 값, 타입 체크(값이 같더라도 타입 불일치→컴파일 에러)
- C언어 열거형: 값만 체크
2. 열거형 정의
- 사용: 열거형이름.상수명
- 열거형 변수 선언 후 사용
- 열거형 상수 비교: '==' 와 compareTo() 사용, 비교 연산자(> <) 사용 불가
enum 열거형이름 { 상수명1, 상수명2, 상수명3, ... }
enum Direction { EAST, SOUTH, WEST, NORTH }
// 0 1 2 3
class Unit {
int x, y;
Direction dir; // 열거형 인스턴스 변수 선언
void init() {
dir = direction.EAST; // 유닛 방향 EAST로 초기화
}
}
3. 열거형 조상(java.lang.Enum)
- 모든 열거형은 Enum클래스의 자손
// Enum 메서드
Class<E> getDeclaringClass() // 열거형의 Class객체 반환(잘 안 씀)
String name() // 열거형 상수 이름을 문자열로 반환
int ordinal() // 열거형 상수 순서 반환(0부터 시작)
T valueOf(Class<T> enumType, String name) // 지정된 열거형에서 name 일치하는 열거형 상수 반환
// 컴파일러가 자동 추가해주는 메서드
values() // 열거형 모든 상수 출력
valueOf() // 열거형 상수 이름(문자열)→열거형 상수 반환
Direction d = Direction.valueOf("EAST"); // d = EAST
Direction.EAST==Direction.valueOf("EAST")); // true
4. 열거형 멤버 추가
- 불연속적 열거형 상수: 원하는 값 괄호()에 지정, 여러개 가능 EAST(1, ">")
- 지정된 값 저장: 인스턴스 변수, 생성자 추가
- 열거형 생성자(private) 외부에서 객체 생성 불가
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; }
}
'Java' 카테고리의 다른 글
쓰레드(thread) (0) | 2022.11.17 |
---|---|
애너테이션 (0) | 2022.11.08 |
지네릭스(Generics) (0) | 2022.11.04 |
HashMap, TreeMap, Collections (0) | 2022.10.30 |
HashSet, TreeSet(binary search tree) (0) | 2022.10.29 |