본문 바로가기

Java

Java 열거형(enum)

 

관련된 상수들을 묶어 놓은 것

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