enum
서로 관련성 있는 상수들을 모아서 심볼릭한 명칭의 집합으로 정의한 것
별도의 파일로 분리해서, 클래스 내부에, 클래스 외부에 정의하여 사용하는 것이 모두 가능함
- 그냥 열거하여 상수의 이름들을 적어내는 경우 → 열거된 순서대로 0부터 1씩 증가하는 형태로 값을 가지게 됨. ⇒ 이 때 ';'을 붙이지 않는 것이 포인트
- 출력하는 경우? → 할당된 상수 값이 아닌 심볼릭하게 지정된 상수명이 출력됨
- 함께 사용할 수 있는 관련 method 들도 존재함 - class의 개념이라고 볼 수 있음
- values() - 열거된 모든 원소들을 배열에 담아서 순서대로 반환
- ordinal() - 열거된 순서를 정수값으로 반환 (0부터 시작함)
- valueOf() - 매개변수로 주어진 String과 일치하는 이름을 가진 원소를 열거형에서 반환 (없는 경우 illegalArgumentException 발생)
- 열거형 상수에 ("value")를 할당하는 경우 해당 열거형 상수를 다른 값과 연결할 수 있음 (단, 이렇게 하는 경우에는 그 끝에 ';'이 붙어줘야 함.)
- 'static final' keyword를 사용하여 열거형을 선언하는 것 또한 가능함