미리 정의된 상수들의 특별한 집합. 즉, 상수들을 열거한 것이 enum이다.

enum에 열거된 상수들은 추가적인 객체 생성 없이 외부에서 사용 가능하고 불변이다. 기본적으로 final인 상수이기 때문에 모두 대문자로 적는 것을 원칙으로 한다. 다른 class와 마찬가지로 생성자를 만들 수도 있다.기존에는 class 내에서 상수를 선언함으로써 상수를 관리 하였는데 class 내에서 선언하는 부분은 네이밍이 겹칠 수 있고 불 필요하게 상수가 많아지는 단점이 있다. IDE의 지원을 적극적으로 받을 수 없고 타입 안정성이 떨어지는 단점이 있다. 이를 보완하며 나온 것이 enum이다.

특징

enum의 기본 형태

public enum Day {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
    THURSDAY, FRIDAY,SATURDAY;
}

enum의 기본 메서드

자바의 모든 enum은 java.lang.Enum class를 상속받으며, 아래의 기본 메서드를 사용할 수 있다.

  1. values()
    1. 열거형의 모든 값을 배열로 반환한다.
  2. ordinal()
    1. 열거형 상수의 정의 순서를 반환한다.(0부터 시작)
  3. name()
    1. 열거형 상수의 이름(문자열)을 반환한다.
  4. valueOf(String name)
    1. 문자열 이름에 해당하는 열거형 상수를 반환한다.

enum의 본질

  1. 자바에서 final클래스로 컴파일된다.