ENUM_열겨형

이동건 (불꽃냥펀치)·2024년 11월 18일
0

문자열과 타입 안정성

열거형 타입이 생긴 이유

문자열을 사용하면 다음과 같은 문제가 자주 발생한다.

  • 타입 안정성 부족: 문자열은 오타가 발생하기 쉽고 유효하지 않은 값이 입력 될 수 있다.
    • String으로 상태나 카테고리를 표현하면 잘못된 문자열을 실수로 입력할 가능성이 있다.
    • 이렇게 잘못된 값은 컴파일시에 감지가 되지않고 런타임에서만 오류가 발생하기 때문에 디버깅이 어려워 질수도 있다.
  • 데이터 일관성: 문자열을 다양한 형식으로 입력할 수 있어 일관성이 떨어진다.

타입 안전 열거형

앞서 언급한 문제를 해결하기 위해 나온 것이 바로 타입 안전 열거형 패턴이다. 중요한 것은 타입 안전 열거형 패턴을 사용하면 나열한 항목만 사용할 수 있다는 점이다. 즉, String처럼 아무 문자열이나 다 사용 할 수 있는 것이 아닌 우리가 나열한 문자만 사용이 가능하다.

타입 안전 열거형 패턴 의 장점

  • 타입 안정성 향상: 정해진 객체만 사용할 수 있어, 잘못된 값을 엽력하는 문제를 근본적으로 방지할 수 있다.
  • 데이터 일관성: 정해진 객체만 사용하므로 데이터의 일관성이 보장된다.
  • 제한된 인스턴스 생성: 클래스는 사전에 정의된 몇개의 인스턴스만 생성하고, 외부에서는 이 인스턴스들만 사용할 수 있도록 한다.

Enum Type 예시

 package enumeration.ex3;
 public enum Grade {
     BASIC, GOLD, DIAMOND
}
  • 열거형을 정의할 때는 class 대신에 enum을 사용한다.
  • 원하는 상수의 이름을 나열하면 된다.
 public class Grade extends Enum {
     public static final Grade BASIC = new Grade();
     public static final Grade GOLD = new Grade();
     public static final Grade DIAMOND = new Grade();
//private 생성자 추가
     private Grade() {}
}
  • 열거형도 클래스다.
  • 열거형은 자동으로 `java.lang.Enum을 상속받는다.
  • 외부에서 임의로 생성할 수 없다.
  • 열거형은 스위치문에 사용할 수 있는 장점도 있다.

열거형 주요 메서드

  • values(): 모든 ENUM 상수를 포함하는 배열을 반환한다.
  • valueOf(String name): 주어진 이름과 일치하는 ENUM 상수를 반환한다.
  • name(): ENUM 상수의 이름을 문자열로 반환한다.
  • ordinal(): ENUM 상수의 선언 순서(0부터 시작)를 반환한다.
  • toString(): ENUM 상수의 이름을 문자열로 반환한다. name() 메서드와 유사하지만, toString() 은 직접 오버라이드 할 수 있다.







출처: https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%8B%A4%EC%A0%84-%EC%9E%90%EB%B0%94-%EC%A4%91%EA%B8%89-1/dashboard

profile
자바를 사랑합니다

0개의 댓글

관련 채용 정보