Written by
Poogle
on
on
Enum 활용기
참고: 책 - 이펙티브 자바 Effective Java 3/E
Enum
- 열거 타입은 일정 개수의 상수 값을 정의한 다음 그 외의 값은 허용하지 않는 것 타입
- ex. 사계절, 태양계의 행성
- Enum 등장 (열거 타입)
public enum Apple {FUJI, PIPPIN};
public enum Apple {NAVEL, TEMPLE};
- 완전한 형태의 클래스
- 열거 타입 자체는 클래스, 상수 하나당 자신의 인스턴스를 하나씩 만들어 public static final 필드로 공개
- 열거 타입은 밖에서 접근할 수 있는 생성자 제공 X, 사실상 final
- 클라이언트가 인스턴스를 직접 생성하거나 확장할 수 없으니 열거 타입 선언으로 만들어진 인스턴스들은 딱 하나씩만 존재 -> 인스턴스 통제됨
- 싱글턴은 원소가 하나뿐인 열거 타입 => 열거 타입은 싱글턴을 일반화한 형태
Enum을 통해 얻는 장점
- 문자열 보다 강력한 지원 by IDE
- 허용 가능한 값 제한
- 리팩토링 시 변경 범위가 최소화 -> Enum 코드만 수정하면 되니까
- Java의 Enum은 완전한 기능을 갖춘 클래스
- 데이터들 간의 연관관계 표현