- 열거형은 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용하다.
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
'Programming > JAVA' 카테고리의 다른 글
Java - 람다 (기본, 함수형 인터페이스 API) (0) | 2023.08.31 |
---|---|
JAVA - Stream API (1) (스트림 생성 방법) (0) | 2023.06.08 |
JAVA - Optional (0) | 2023.06.05 |
JAVA - Reflection API (0) | 2023.06.01 |
JAVA - 람다 (기본) (0) | 2023.05.18 |