열거형
열거형이란
JDK 1.5부터 추가된 서로 관련된 상수를 편리하게 선언하기 위한 클래스
before
1
2
3
4
5
6
7
8
9
10
11
12
13
class Card {
static final int CLOVER = 0;
static final int HEART = 1;
static final int DIAMOND = 2;
static final int SPADE = 3;
static final int TWO = 0;
static final int THREE = 1;
static final int FOUR = 2;
final int kind;
final int num;
}
after
1
2
3
4
5
6
7
class Card {
enum Kind { CLOVER, HEART, DIAMOND, SPADE }
enum Value { TWO, THREE, FOUR }
final Kind kind;
final Value value;
}
사용법
정의
1
enum 열거형이름 { 상수명, 상수명, ... }
사용
1
2
3
4
5
6
7
8
9
10
enum Direction { EAST, SOUTH, WEST, NORTH }
class Unit {
int x, y;
Direction dir;
void init() {
dir = Direction.EAST;
}
}
열거형 상수간의 비교에
==
을 사용할 수 있지만>
,<
같은 비교연산자는 사용이 불가능하다. 비교는compareTo
메서드를 사용해야 한다.
사용 가능한 함수
메서드 | 설명 | 호출 주체? |
---|---|---|
static E[] values() | 열거형의 모든 상수를 배열에 담아 반환 | 열거형 |
static E valueOf(String name) | name과 일치하는 열거형 상수 인스턴스를 반환 | 열거형 |
String name() | 열거형 상수의 이름을 문자열로 반환 | 변수 |
int ordinal() | 열거형 상수가 정의된 순서를 반환 (0부터 시작) | 변수 |
열거형에 멤버 추가
열거형 상수의 값은 기본적으로 0부터 시작된다.
원하는 상수의 값을 지정하려면 다음과 같이 열거형을 정의해야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
enum Direction {
EAST(11), SOUTH(12), WEST(13), NORTH(14);
private final int value; // 값을 저장할 필드
Direction(int value) { // 생성자. private 생성자라 new 키워드 사용불가
this.value = value;
}
public int getValue() {
return value;
}
}
열거형 상수를 모두 정의한 다음에 필드, 생성자, 메서드 같은 구문을 작성해야 한다.
상수의 값은 하나가 아니라 여러개가 될 수도 있으며 필드와 메서드를 추가하고 생성자를 수정하면 된다.
또한, 추상메서드를 정의할 수도 있으며 추상메서드가 정의되어 있다면 상수를 정의할 때 추상메서드를 구현해야 한다.
This post is licensed under CC BY 4.0 by the author.