열거형은 잘 쓰지않아 가끔씩 나올때마다 까먹어서 찾아본다. 이번기회에 기록하고 모르면 이걸 찾아 쓰자
서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할떄 사용하면 유요하다.
자바의 열거형은 타입에 '안전한 열거형' 이라서 실제 값이 같아도 타입이 다르면 컴파일시 에러가 발생한다.
상수의 값이 바뀌면 해당 상수를 참조하는 모든 소스를 다시 컴파일해야하지만 열거형 상수를 사용하면 기존의 소스를 다시 컴파일 하지 않아도 된다.
enum 열거형이름 {상수명1, 상수명2...}
열거형이름.상수명
< > 와같은 비교연산자 사용불가 / compareTo() 사용가능
==를 사용할수 있다.
switch문의 조건식 사용가능 // case문에 열거형이름은 적지 않고 상수의 이름만 적어야한다
String name() = 열거형 상수이름을 문자열로 반환
int ordinal() = 열거형 상수가 정의된 순서를 반환(0부터시작)
valueOf(Class<T.> enumType, Stinrg name) = 지정된 열거형에 name과 일치하는 열거형 상수 반환
ordinal() 이 열거형 상수가 정의된 순서를 반환하지만, 이값을 열거형 상수의 값으로 사용하지 않는것이 좋다. 이값은 내부적인 용도로만 사용하기 위한 것이기 때문이다.
열거형 상수의 값이 불연속적인 경우에는 열거형 상수의 이름 앞에 원하는 값을 괄호()에 적어주면 된다.
enum Direction {East(1), South(5), West(-1),North(10)}
enum Direction{
East(1), South(5), West(-1),North(10) ;
private final int value; // 정수를 저장할인스턴스 변수
Direction (int value) {this.value= value;} //생성자 추가
public int getValue(){retrun value;}
}
East(1,">"), South(5,"V"), West(-1,"<"),North(10,"^") ;