Java

[인프런] ENUM

sejin2 2024. 6. 15. 11:10

타입 안전 열거형 패턴 - Type-Safe Enum Pattern 이란?

열거형(Enum)은 관련된 상수들의 집합을 의미한다.예를 들어, 요일, 달, 방향 등을 열거형으로 표현할 수 있다.
자바 5 이전에는 상수를 정의하기 위해 public static final을 사용했지만, 이는 타입안전을 보장하지 못했다.
자바 5부터는 enum 키워드를 사용하여 타입안전한 열거형을 정의할 수 있게 되었다.

 

열거형을 사용할 때는 class가 아닌 enum으로 만들어준다.

enum은 열거형 내부에서 상수로 지정하는 것 외에 직접 생성이 불가능 하다. 생성할 경우 컴파일 오류가 발생한다. 

=> 오류 메시지 : enum classes may not be instantiated

 

타입안전 열거형의 장점

  1. 타입 안전성: 열거형을 사용하면 컴파일 타임에 타입 체크가 이루어지므로 런타임 오류를 줄일 수 있다.
  2. 가독성: 코드의 가독성이 높아져서 유지보수가 용이해진다.
  3. 기능 확장: 열거형은 클래스처럼 필드, 메서드, 생성자를 가질 수 있어 더 많은 기능을 제공할 수 있다.

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' 카테고리의 다른 글

[인프런] Class 클래스  (1) 2024.06.09
[인프런] 래퍼 클래스  (1) 2024.06.09
[인프런] String 클래스  (1) 2024.06.08
[인프런] 기본형과 참조형의 공유  (0) 2024.06.06
Labelled Loop ( 이름을 가지는 반복문 )  (0) 2024.06.03