열거형 : 관련된 상수들을 편하게 선언하기 위한 것. 여러 상수를 정의할때 사용하면 유용하다.
열거형의 정의
열거형을 정의 하는 방법
enum 열거형이름 {상수명1, 상수명2, ...}
ex)
enum Direction {EAST, SOUTH, WEST, NORTH}
열거형의 상수 사용법
열거형이름.상수명
ex)
class Unit{
int x, y;
Direction dir;
void init(){
dir = Direction.EAST;
}
}
열거형 상수간의 비교 <, >와 같은 비교연산자는 사용이 불가능하다. 그러나 == 연산과 compareTo()는 사용가능하다.
모든 열거형의 조상 : java.lang.Enum
열거형의 모든 상수 출력
ex)
Direction[] dArr = Direction.values();
for(Direction d : dArr)
System.out.printf("%s = %d%n", d.name(), d.ordinal());
values() 메서드는 열거형의 모든 상수를 배열에 담아 반환하는 메서드이다. 이 메서드는 모든 열거형이 가지고있다.
Enum클래스 메서드
Class<E> getDeclaringClass) : 열거형의 class 객체를 반환
String name() : 열거형 상수의 이름을 문자열로 반환한다.
int ordinal() : 열거형 상수가 저장된 순서를 반환한다.
T valueOf(Class<T> enumType, String name) : 지정된 열거형 name과 일치하는 열거형 상수를 반환한다.
compareTo를 통해 대소비교가 가능하다.
values()메소드로 열거형을 열거형 배열로 반환할 수 있다.
열거형의 멤버
상수의 값을 지정해주고 싶을 때에는 열거형 상수의 이름 옆에 지정하고 싶은 값을 괄호()와 함께 적어주면된다.
그리고 지정된 값을 저장할 수 있는 인스턴스 변수와 생성자를 추가해준다. 이때 열거형 상수를 모두 정의한 후에 다른 멤버들(생성자, 인스턴스 변수, 메서드)을 추가해주어야 한다.
ex)
enum Direction{
EAST(1), SOUTH(5), WEST(-1), NORTH(10);
private final int value;
Direction(int value) {this.value = value;}
public int getValue() {return value;}
}
예제
Enum의 메서드를 정의하여 사용가능하다.
EAST, WEST, SOUTH, NORTH 등은 객체의 주소이자 name이 된다.
'Programming > JAVA' 카테고리의 다른 글
쓰레드(Thread) (0) | 2021.08.13 |
---|---|
에너테이션(annotation) (0) | 2021.08.11 |
지네릭스(Generics) (0) | 2021.08.07 |
Collection 정리 (0) | 2021.08.07 |
Map (0) | 2021.08.07 |