Java
Enum
혀눅짱
2023. 10. 27. 11:10
enum은 열거형(enumerated type)이라고 부른다. 열거형은 서로 연관된 상수들의 집합이라고 할 수 있다.
enum은 class, interface와 동급의 형식을 가지는 단위다. 하지만 enum은 사실상 class이다. 편의를 위해서 enum만을 위한 문법적 형식을 가지고 있기 때문에 구분하기 위해서 enum이라는 키워드를 사용하는 것이다.
예시
public enum Week {
MONDAY("mon", 10),
TUESDAY("tue", 20),
WEDNESDAY("wed", 30),
THURSDAY("thu", 40),
FRIDAY("fri", 50),
STURDAY("sat", 60),
SUNDAY("sun", 70);
private final String title;
private final int value;
Week(String title, int value) {
this.title = title;
this.value = value;
}
public String getTitle() {
return title;
}
public int getValue() {
return value;
}
}
enum을 사용하는 이유를 정리하면 아래와 같다.
- 코드가 단순해진다.
- 인스턴스 생성과 상속을 방지한다.
- 키워드 enum을 사용하기 때문에 구현의 의도가 열거임을 분명하게 나타낼 수 있다.
enum은 생성자를 가질 수 있다. 생성자로부터 전달받은 인자가 enum의 필드의 밸류가 된다. 그렇기때문에 상수들에게 필드 값을 설정하고 싶다면 생성자를 통해 값을 전달한다.
해당 예시를 롬복을 통해 소스를 간략화 시킬 수 있다.
@Getter
@RequiredArgsConstructor
public enum Week {
MONDAY("mon", 10),
TUESDAY("tue", 20),
WEDNESDAY("wed", 30),
THURSDAY("thu", 40),
FRIDAY("fri", 50),
STURDAY("sat", 60),
SUNDAY("sun", 70);
private final String title;
private final int value;
}
@GetMapping("enumTest")
public void enumTest(){
for(Week week : Week.values()){
System.out.println(week.name());
System.out.println(week.getTitle());
System.out.println(week.getValue());
System.out.println("---------------------------");
}
}
Enum의 values메소드는 해당 열거 상수집합을가져온다.
name메소드는 해당 enum의 이름을 문자열로 반환한다.