타입 안전 열거형 패턴 - Type-Safe Enum Pattern 이란?
열거형(Enum)은 관련된 상수들의 집합을 의미한다.예를 들어, 요일, 달, 방향 등을 열거형으로 표현할 수 있다.
자바 5 이전에는 상수를 정의하기 위해 public static final을 사용했지만, 이는 타입안전을 보장하지 못했다.
자바 5부터는 enum 키워드를 사용하여 타입안전한 열거형을 정의할 수 있게 되었다.
열거형을 사용할 때는 class가 아닌 enum으로 만들어준다.
enum은 열거형 내부에서 상수로 지정하는 것 외에 직접 생성이 불가능 하다. 생성할 경우 컴파일 오류가 발생한다.
=> 오류 메시지 : enum classes may not be instantiated
타입안전 열거형의 장점
- 타입 안전성: 열거형을 사용하면 컴파일 타임에 타입 체크가 이루어지므로 런타임 오류를 줄일 수 있다.
- 가독성: 코드의 가독성이 높아져서 유지보수가 용이해진다.
- 기능 확장: 열거형은 클래스처럼 필드, 메서드, 생성자를 가질 수 있어 더 많은 기능을 제공할 수 있다.
ENUM 주요 메서드
- values( ) : 모든 ENUM 상수를 포함하는 배열을 반환한다.
- valueOf( String name ) : 주어진 이름과 일치하는 ENUM 상수를 반환한다.
- name( ) : ENUM 상수의 이름을 문자열로 반환한다.
- ordinal ( ) : ENUM 상수의 선언 순서 ( 0부터 시작 )를 반환한다.
- toString( ) : ENUM 상수의 이름을 문자열로 반환한다. name( ) 메서드와 유사하지만, toString( ) 은 직접 오버라이드 할 수 있다.
+ ordinal ( )은 가급적 사용하지 않는 것이 좋다.
이 값을 사용하다가 중간에 상수를 선언하는 위치가 변경되면 전체 상수의 위치가 모두 변경될 수 있기 때문이다.
열거형은 java.lang.Enum을 강제로 상속 받는다.
열거형은 이미 java.lang.Enum를 상속받았기 때문에 추가로 다른 클래스를 상속받을 수 없다.
열거형은 인터페이스를 구현할 수 있다.
열거형에 추상메서드를 선언하고, 구현할 수 있다. 이 경우 익명 클래스와 같은 방식을 사용한다.
공부 내용: [인프런] 김영한의 실전 자바 - 중급 1편
'Java' 카테고리의 다른 글
[인프런] Local Date Time (2) | 2024.09.08 |
---|---|
[인프런] Class 클래스 (1) | 2024.06.09 |
[인프런] 래퍼 클래스 (1) | 2024.06.09 |
[인프런] String 클래스 (1) | 2024.06.08 |
[인프런] 기본형과 참조형의 공유 (0) | 2024.06.06 |