목차
열거형
관련이 있는 상수들의 집합
프로그래밍을 할 때 봄,여름,가을,겨울 이나 동,서,남,북 처럼 변하지 않고 일정한 값을 유지하며 사용해야 할 때 enum 을 사용한다.
자바의 열거형은 C언어의 열거형보다 더 향상된 것으로, 갖는 값 뿐만 아니라 타입까지 관리하기 때문에 논리적인 오류를 줄일 수 있다.
열거형 정의
enum 열거형이름 { 상수명1, 상수명2, ... }
enum Direction { EAST, SOUTH, WEST, NORTH }
괄호 { } 안에 상수의 이름을 나열하기만 하면 된다.
이름을 지을때, 상수는 보통 대문자를 사용하고 두단어 이상의 결합은 underscores를 이용하여 구분한다.
ex) EAST, EAST_HOME
사용하는 방법
열거형이름.상수명 으로 사용할 수 있다.
Direction dir = Direction.EAST;
특징
- equals() 가 아닌 '=='를 사용해야한다.
- 비교연산자(>,<) 가 아닌 compareTo()를 사용해야한다.
- 다음과 같이 switch문을 사용할 때에는 case문에 열거형의 이름은 적지 않고 상수의 이름만 적어야 한다.
switch(dir){
case EAST: x++;
break;
case WEST: x--;
break;
}
또한 Enum 클래스에는 다음과 같은 메서드가 정의되어 있다.
메서드 | 설명 |
Class<E> getDeclaringClass() | 열거형의 Class객체를 반환한다. |
String name() | 열거형 상수의 이름을 문자열로 반환한다. |
int ordinal() | 열거형 상수가 정의된 순서를 반환한다.(0부터 시작) |
T valueOf(Class<T> enumType, String name) | 지정된 열거형에서 name과 일치하는 열거형 상수를 반환한다. |
멤버 추가
열거형에는 다음과 같이 값을 지정해줄 수 있다.
enum Direction{
EAST(1),SOUTH(5),WEST(-1),NORTH(10);
private final intt value; //정수를 저장할 필드 추가
Direction(int value){ //생성자 추가
this.value = value;
}
public int getValue(){
return value;
}
}
열거형 상수의 이름 옆에 원하는 값을 괄호와 함께 적어준다. 주의할 점은 지정된 값을 저장할 수 있는 인스턴스 변수와 생성자를 새로 추가해 주어야 한다는 것이다.