enum 클래스
16 Sep 2024자바에서 enum은 특정 값들의 집합을 표현하는 데 사용되는 특별한 데이터 타입이다.
enum 클래스는 주로 상태, 타입, 옵션 또는 특정 범위 내의 값을 나타내는 데 유용하다.
기본사용법
enum은 enum 키워드를 사용해서 정의한다.
모두 대문자로 작성하는 것이 관례다.
그냥 문자열 데이터를 사용하면 되는 데 왜 굳이 열거형 데이터를 사용할까?
enum 데이터를 사용하면 문자열만으로 사용하는 것보다 많은 장점을 가진다.
- 타입 안전성 열거형을 사용하면, 값이 미리 정의된 상수들로 한정되니, 잘못된 값이 사용되는 것을 방지할 수 있다. -> 컴파일 시점에서 오류를 발견할 수 있다.
- 가독성 열거형은 의미 있는 이름을 사용할 수 있어 코드의 가독성을 향상시킨다.
- 오타 방지 열겨형은 값을 미리 정의해 놓고, 해당 값만 사용할 수 있도록 제한하므로, 잘못된 값을 입력하는 실수를 방지할 수 있다.
- 비즈니스 로직을 코드로 표현 열거형은 값에 대해 추가적인 속성이나 로직을 추가할 수 있기 때문에 비즈니스 로직을 보다 명확하게 표현할 수 있다.
- 성능 열거형은 내부적으로 상수 값으로 처리되므로, 문자열에 비해 성능이 우수할 수 있다.
문자열은 equals() 메서드를 호출하는 과정이 필요하지만 열거형은 == 연산자로 비교할 수 있어 효율적이다.
enum과 인터페이스
enum은 인터페이스를 구현할 수 있다.
이를 통해 enum 값마다 다르게 동작하는 메서드를 정의할 수 있다.
enum과 싱글톤
자바의 enum은 내부적으로 객체의 인스턴스를 하나만 가지도록 보장된다.
enum 값은 각 값마다 하나의 객체 인스턴스만 존재하며, 이 객체는 JVM에서 유일하게 존재한다.
enum을 사용하면 다중 스레드 환경에서도 자원 공유가 안전하게 보장되며, enum 값이 final로 고정되기 때문에 jvm의 로딩 과정에서 한 번만 인스턴스 생성이 된다.
코드로 알아보자
참조값과 해시코드까지 동일하게 출력된다.