본문 바로가기

Java

열거형(enum)

출처 - 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