열거형 : 서로 관련된 상수를 편리하게 선언하기 위한 것
열거형이란 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할때 사용하면 유용하다.
jdk 1.5부터 추가되었다.
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;
}
class Card{
enum Kind { CLOVER, HEAR, DIAMOND, SPACE } //열거형 Kind를 정의
enum Value { TWO, THREE, FOUR } // 열거형 Value를 정의
final Kind kind; // 타입이 int가 아닌 Kind임을 유의하자.
final Value value;
}
- '타입에 안전한 열거형' 이라서 실제 값이 같아도 타입이 다르면 컴파일 에러 발생
- 열거형 상수를 사용하면, 기존의 소스를 다시 컴파일하지 않아도 된다.
열거형 정의
enum 열거형 이름 {상수명1, 상수명2, ... }
사용하는 방법 : 열거형이름.상수명
ex.
enum Direction { EAST , SOUTH, WEST, NORTH}
class Unit{
int x,y;
Direction dir;
void init(){
dir= Direction.EAST; // 사용법 : 열거형이름.상수명
}
}
- 열거형 상수간의 비교에는 '==' 를 사용할 수 있다.
- compareTo()도 사용가능하고, switch조건식에도 열거형을 사용할 수 있다.
모든 열거형의 조상 - java.lang.Enum
열거형 Direction에 정의된 모든 상수를 출력하려면, 아래와 같다.
Direction[] dArr= Direction.values();
for(Direction d: dArr) // for(Direction d: Direction.values())
System.out.println("%s = %d%n", d.name(), d.ordinal());
values() 는 열거형의 모든 상수를 배열에 담아 반환한다.
이 메서드는 모든 열거형이 가지고 있는 것으로 컴파일러가 자동으로 추가해 준다.
ordinal()은 모든 열거형의 조상인 java.lang.Enum클래스에 정의된 것으로, 열거형 상수가 정의된 순서(0부터 시작)를 정수로 반환한다.
Class<E> getDeclaringClass() : 열거형의 Class 객체를 반환한다.
Sting name() : 열거형 상수의 이름을 문자열로 반환한다.
T valueOf(Class<T> enumType, String name) : 지정된 열거형에서 name과 일치하는 열거형 상수를 반환한다.
Direction d = Direction.valueOf("WEST");
System.out.println(d); // WEST
'JAVA > JAVA 기본정리' 카테고리의 다른 글
오버라이딩(overriding) / 오버로딩 (overloading) / super / super() (0) | 2022.05.31 |
---|---|
상속(inheritance) / 포함(Composite) 관계 (0) | 2022.05.31 |
JVM의 메모리구조 (0) | 2022.05.28 |
Comparator/ Comparable / Sort / 내림차순 (0) | 2022.05.17 |
HashMap (0) | 2022.05.09 |