1. Enum이란?
자바 버전이 업데이트가 되면서 추가된 개념인데, 데이터 중에는 요일(월 화 수 목 금 토 일), 계절(봄 여름 가을 겨울) 등 과 같이 몇 가지 한정된 값을 갖는 경우가 흔히 있는데, 요일, 계절과 같이 한정된 데이터만을 가지는 타입을 Enumeration Type 이라고 한다.
- 열거상수(Enumeration constant) : 열거 타입에 들어가는 값(월, 화, 수 등..)들
public enum Week {
MONDAY, TUESDAY, WEDNESDAY, THUSDAY, FRIDAY, SATURDAY, SUNDAY;
}
- enum 데이터 타입
- 관례적으로, Java class명처럼 타입이름의 첫글자를 대문자로 하고, 열거상수를 적을 때도 대문자로 적는다.
- 서로 관련있는 상수들을 모아서 하나의 자료형으로 선언한다.
- 열거형으로 선언된 순서에 따라 0부터 index 값을 가지며, 1씩 증가한다.
2. Enum의 장점
1. 코드가 단순해지며 가독성이 좋아진다.
2. 인스턴스 생성과 상속을 방지하여 상수값의 안정성이 보장됨
3. 상수 자료형을 정의함으로써 해당 자료형 이외의 상수 값은 저장되지 못하게 한다.
4. enum 예약어를 사용하므로 열거 의도를 분명히 한다.
3. 열거 상수를 다른 값과 연결하기
- 열거 상수 각각이 열거 객체이므로 열거 객체에 생성자를 사용해서
다음과 같이 열거상수에 다른 값을 할당할 수 있다.
- 해당 자료형에 맞는
private생성자 필요하다.
외부 클래스에서 상속 또는 인스턴스 생성을 하지 못하도록 함
(private가 아닌 경우 에러)
private Type(String name) { this.name = name; }
- 연결한 값을 반환해 줄 getter 메서드 필요하다.