본문 바로가기
개발언어/Java : 자바

자바 쉽게 배우기 19 - 열거형 (Enum)

by 개발자D 2023. 2. 21.

열거형 (Enum)

jdk 1.5부터 추가된 열거형은 관련된 여러 상수를 한 데 모아 정의할 때 사용하는 타입입니다. 자바의 열거형 타입을 사용하면 상수의 값 비교 시 타입까지 비교합니다. 또한 열거형의 상수 값을 바꿀 때 기존의 소스를 다시 컴파일하지 않아도 된다는 장점이 있습니다. 

 

열거형 선언과 사용

선언

enum 열거형이름 { 상수1, 상수2, ... , 상수n }

열거형 이름은 첫 글자를 대문자로 하는 것이 관례입니다. 상수는 모두 대문자로 작성하고, 여러 단어로 구성된 경우 단어 사이를 밑줄_로 연결합니다. 선언된 상수들은 순서에 따라 0부터 1씩 증가하는 값을 가집니다. 선언된 상수들은 하나하나가 모두 객체입니다. 

 

enum 열거형이름 { 
	
    상수1(값1), 상수2(값2), ... , 상수n(값n); // 하나의 상수에 여러 값 지정 가능 ,로 구분

    private final 값의타입 value;
    열거형이름 (값의타입 value) { this.value = value; } // 생성자, private 제어자가 생략된 상태
    public 값의타입 getValue() { return value; }
    
}

순서를 그대로 사용하는 것이 아니라 상수 이름 옆에 괄호()를 붙여 값을 지정해 사용하는 것이 바람직합니다. 지정된 값을 저장할 수 있는 변수와 생성자, getter를 추가해 사용할 수 있습니다. 

 

추상 메서드 사용

enum 열거형이름 { 
	
    상수1(값1) { 추상 메서드 }, 
    상수2(값2) { 추상 메서드 };
    
    추상 메서드 선언

    private final 값의타입 value;
    열거형이름 (값의타입 value) { this.value = value; }
    public 값의타입 getValue() { return value; }
}

열거형 안에 추상 메서드를 선언해서 상수마다 다르게 구현할 수 있습니다.

 

사용

열거형이름 변수명 = 열거형이름.상수명

열거형 상수 간의 비교에서는 ==나 equals, 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) name 과 일치하는 열거형 상수를 반환

 


열거형을 짧게 살펴보았습니다. 다음 글에서는 스레드(thread)를 설명드리겠습니다. 감사합니다.

 

자바 쉽게 배우기 20 - 스레드

스레드 스레드를 이해하기 위해서는 프로세스를 알아야 합니다. 자바 쉽게 배우기 1 - 자바란 무엇인가? 에서 멀티 스레드와, 프로세스, 스케쥴링에 대해 설명드렸었는데 기억하시는 분이 있으

devdharu.tistory.com