Programming/JAVA
JAVA - 열거형
잇(IT)
2023. 6. 7. 11:49
- 열거형은 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용하다.
public 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;
}
- 위와 같이 상수 하나마다 값을 넣어 지정해줘야 했다.
enum Kind { CLOVER, HEART, DIAMOND, SPADE } // 열거형 Kind를 정의
enum Value { TWO, THREE, FOUR } // 열거형 Value를 정의
final Kind kind;
final Value value;
}
- 열거형을 사용하면 값을 별도로 지정해주지 않아도 순서대로 0,1,2,3...가 값으로 지정된다.
1. 열거형은 값 대입뿐만 아니라 타입까지 체크하기 때문에 타입에 안전하다.
- 열거형 상수간의 비교에는 '==' 를 사용할 수 있다.
- 그러나 '<','>'와 같은 비교연산자는 사용할 수 없고 compareTo()는 사용 가능하다. compareTo()는 두 비교대상이 같으면 0, 왼쪽이 크면 양수, 오른쪽이 크면 음수를 반환한다.
enum Direction { EAST, SOUTH, WEST, NORTH }
Direction dir;
dir == Direction.EAST
dir.compareTo(Direction.WEST) > 0
메서드 | 설명 |
Class<E> getDeclaringClass() | 열거형의 Class 객체를 반환한다. |
String name() | 열거형 상수의 이름을 문자열로 반환한다. |
int ordinal() | 열거형 상수가 정의된 순서를 반환한다.(0부터 시작) |
T valueOf(Class<T> enumType, String name) | 지정된 열거형에서 name과 일치하는 열거형 상수를 반환한다. |
- 이외에도 values()처럼 컴파일러가 자동적으로 추가해주는 메서드가 하나 더 있다.
static E values()
static E valueof(String name)
728x90