서로 연관된 상수들의 집합을 의미한다.
level(난이도)를 나타내는 특정 상수값이 있다.
예전에는 모두 상수로 선언해 사용했다.
public static final String LOW = "쉬워요";
public static final String MID = "보통이에요";
public static final String HIGH = "어려워요";
이 방식은 실수하기도 쉽고 알아보기도 어려워진다.
Enum
을 사용하여 위와 같은 문제를 해결할 수 있다.
단순하게 난이도를 열거하여 Enum 클래스를 만들 수 있다.
public enum Level {
LOW, MID, HIGH
}
각 요소들에 대한 이름 등이 필요할 때도 있다.
이럴때는 생성자와 final 필드를 추가 하면 된다.
필드값을 생성하면 생성자도 같이 추가해야한다.
public enum Level {
LOW("쉬워요"),
MID("보통이에요"),
HIGH("어려워요");
private final String label;
Level(String label) {
this.label = label;
}
public String label() {
return label;
}
}
이렇게 하면 특정 요소를 하나의 Enum 으로 묶어 사용할 수 있다.
추가한 값은 아래와 같이 가져올 수 있다.
Level.LOW.name() // LOW
Level.LOW.label() // 쉬워요
Enum 클래스에서는 name()
이라는 메소드를 자체 제공하기 때문에 label()
과 헷갈릴 수 있어 유의해야한다.
reference
https://bcp0109.tistory.com/334