열거형이라고 불리며, 서로 연관된 상수들의 집합을 의미합니다.
enum GALAXY{
NOTE, // 상수명
TAB
}
만약 type이 NOTE로 설정되었는데 다른 값이 할당되면 바로 에러가 난다.enum Day {
MONDAY, TUESDAY, WENDNESDAY
}
public enum RoadSide {
LEFT(“왼쪽”), RIGHT(“오른쪽”);
private String korName;
RoadSide(String korName) {
this.korName = korName;
}
public String getKorName() {
return korName;
}
}
// 사용
RoadSide rs = RoadSide.LEFT
rs.getKorName();
위에서 확인할 수 있듯이 생성자가 있지만 열거형 객체 생성에 사용할 수 없다. 생성자의 접근 제어자가 묵시적으로 private이기 때문이다. enum 타입은 고정된 상수 집합으로서 런타임이 아닌 컴파일타임에 모든 값을 알고 있어야 하기에 동적으로 값을 설정해줄 수 없고 이에 따라 생성자가 private이여야 한다.
public enum Transportation {
BUS(100){ int fare(int dist) { return dist * BASIC_FARE}},
TRAIN(150){ int fare(int dist) { return dist * BASIC_FARE}};
private int BASIC_FARE;
Transportation(int basicFare) {
this.BASIC_FARE = basicFare;
}
public int getBasicAfre(){ return BASIC_FARE; }
abstract int fare(int dist);
}
// 사용
Transportation.BUS.fare(100);
Transportation.TRAIN.fare(200);
enum Type{
ADD, SUB;
public static int size(){ return values().length; }
}
// 사용
Type.size();