열거형이란?
: 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 유용
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;
}
// same
class Card {
enum Kind { CLOVER, HEART, DIAMOND, SPADE }
enum Value { TWO, THREE, FOUR }
final Kind kind;
final Value value;
}
※ 자바의 열거형은 '타입에 안전한 열거형'이라서 실제 값이 같아도 타입이 다르면 컴파일 에러 발생.
▶ 열거형을 쓰면 타입에 안전함.
열거형의 정의와 사용
enum 열거형이름 { 상수명1, 상수명2, ... }
사용
enum Direction { EAST, SOUTH, WEST, NORTH }
class Unit {
int x, y;
Direction dir;
void init() {
dir = Direction.EAST;
}
}
모든 열거형의 조상 - java.lang.Enum
열거형 Direction에 정의된 모든 상수를 출력하려면
Direction dArr = Direction.values();
for(Direction d : dArr)
System.out.printf("%s = %d%n", d.name(), d.ordinal());
- values() 는 열거형의 모든 상수를 배열에 담아 반환
- ordinal() 은 모든 열거형의 조상인 java.lang.Enum클래스에 정의된 것으로, 열거형 상수가 정의된 순서를 정수로 반환
※ 그 밖의 Enum클래스에 정의된 메서드
메서드 | 설명 |
Class<E> getDeclearingClass() | 열거형의 Class객체를 반환 |
String name() | 열거형 상수의 이름을 문자열로 반환 |
int ordinal() | 열거형 상수가 정의된 순서를 반환 |
T valueOf(Class<T> enumType, String name) | 지정된 열거형에서 name과 일치하는 열거형 상수를 반환 |
Direction d = Direction.valueOf("WEST");
System.out.println(d); // WEST
System.out.println(Direction.WEST == Direction.valueOf("WEST"); // true
'Language > java' 카테고리의 다른 글
[Java] 열거형_열거형의 이해 (0) | 2022.07.30 |
---|---|
[Java] 열거형_열거형에 멤버 추가하기 (0) | 2022.07.30 |
[Java] 지네릭스_지네릭 타입의 제거 (0) | 2022.07.29 |
[Java] 지네릭스_지네릭 타입의 형변환 (0) | 2022.07.29 |
[Java] 지네릭스_지네릭 메서드 (0) | 2022.07.29 |
댓글