여러 상수들을 보다 편리하게 선언할 수 있도록 만들어진 자바 문법 요소
=> 서로 연관된 상수들의 집합
상수(final)
변하지 않는 값
관례적으로 대문자로 작성한다.
1) 상수명 중복 해결
2) 타입 안정성
3) 단순하고 가독성 좋은 코드
(+) enum으로 정의한 상수는 switch문에서도 사용 가능
(+) 구현의 의도가 열거임을 분명하게 알 수 있다.
(+) 요일이나 계절처럼 한정된 개수의 값들을 하나로 묶어서 사용하고 싶을 때, 열거 타입을 사용하면 편하다.
java.lang.Enum
enum 열거형이름 { 상수명1, 상수명2, 상수명3 ,.. }
상수들에 값을 따로 지정해주지 않아도 자동으로 0부터 시작하는 정수값이 할당되어 각각의 정수를 가리킨다.
자바에서는 enum의 값들을 클래스처럼 선언해서 사용할 수도 있다.
public enum Weeks {
MONDAY("mon", 10),
TUESDAY("tue", 20),
WEDNESDAY("wed", 30),
THURSDAY("thu", 40),
FRIDAY("fri", 50),
STURDAY("sat", 60),
SUNDAY("sun", 70);
private final String name;
private final int value;
private Weeks(String name, int value) {
this.name = name;
this.value = value;
}
public String getName() {
return this.name;
}
public int getValue() {
return this.value;
}
}
열거형이름.상수명
👉🏻 Static Methods
valueOf(String name)
valueOf(Class<T> class, String name)
values()
👉🏻 Non-Static Methods
name()
ordinal()
compareTo(비교값)
equals(Object other)