Enum은 열거형이라고 불리며, 서로 연관된 상수들의 집합을 의미한다. 클래스와 같은 문법 체계이며 인터페이스 구현도 가능하다. 상속을 지원하지 않는다.
데이터 그룹화 및 관리에 용이
관련성이 있는 데이터들을 모아 관리할 수 있고, 클래스 형태이기에 관련 로직도 포함할 수 있다. 따라서 상태와 행위를 한 곳에서 관리할 수 있다. 또한 허용 가능한 값들을 제한할 수 있다.
각자의 공간 확보
자바 열거형과 달리 별도의 Enum 클래스 내에서 각자의 공간이 존재해 같은 이름이 존재해도 문제 없이 작동할 수 있다.
리팩토링 시 변경 범위 최소화
관련된 상수, 로직들을 Enum에서 관리하기에 Enum 코드 외에는 수정할 필요가 없다.
싱글톤 형태
Enum 클래스에서 선언한 상수들은 클래스가 로드될 때 오직 하나의 인스턴스가 생성되어 싱글톤 형태로 어플리케이션 전체에서 사용된다. 따라서 클라이언트가 인스턴스를 직접 생성하거나 확장할 수 없다.
타입 안전성 보장
Enum 타입에는 Enum 값만 대입할 수 있기에 다른 값이 들어가는 것을 방지할 수 있다.
✔️ 싱글톤(singleton) 패턴이란?
어떤 클래스가 로딩될 때 처음에 한 번만 메모리를 할당하고(Static) 그 메모리에 객체를 만들어 사용하는 디자인 패턴이다. 한 번의 객체 생성으로 전역성을 띄기에 다른 객체와 공유가 용이하고, 재사용이 가능하기 때문에 메모리 낭비를 방지할 수 있다.