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)를 설명드리겠습니다. 감사합니다.
'개발언어 > Java : 자바' 카테고리의 다른 글
자바 쉽게 배우기 21 - 람다 (0) | 2023.09.18 |
---|---|
자바 쉽게 배우기 20 - 스레드 (0) | 2023.09.15 |
자바 쉽게 배우기 18 - 지네릭스 (0) | 2023.02.20 |
자바 쉽게 배우기 17 - Arrays (0) | 2023.02.14 |
자바 쉽게 배우기 16 - 컬렉션 프레임워크(3) : Map, Iterator (0) | 2023.02.10 |