JAVAENUM

열거형 타입이 만들어지게 된 배경

기존 메서드들의 매개 변수로 String을 받는다고 가정을 했을 때

  1. 타입 안정성을 보장 할 수 없음 (어떤 문자열이 들어와도 로직 수행) 컴파일 단계에서 오류를 찾아낼 수 없음
  2. 데이터 일관성 부족 (대소문자 구분, 개발자의 오타 등등)

이 문제를 해결하기 위해 문자열 상수를 사용해 해결해보고자 함

public class User {
    public static final String BASIC = "BASIC";
}

하지만 여전히 String 값에 대한 입력에 무방비하며 일관성을 보장해 주지 못한다.

타입 안전 열거형 패턴 (직접 구현)

앞선 문제들을 해결하기 위해 열거형 패턴의 등장

public class User{
	public static final User BASIC = new User();
 
// class를 직접 생성하는 것을 제한
	private User(){};
}

String 값의 입력은 막을 수 있고, 타입 역시 보장 하지만 따로 개발하던 개발자가 Class를 마음대로 생성해 들어오는 문제가 발생할 여지가 있음 private 생성자를 만들어 임의로 Class 생성하는 것을 제한

장점

  1. 타입 안정성의 향상 잘못된 값을 입력하는 문제를 근본적으로 차단, 컴파일 시점에 오류 발견
  2. 제한된 인스턴스 생성 미리 정의된 값들만 사용 가능하게 됨

열거형 타입 (축약형)

public enum User{
	BASIC
}

앞서 만들었던 과정을 쉽게 사용할 수 있도록 프로그래밍 언어에서 제공한다. 위 코드는 직접 구현한 코드를 내포한 형태이다.

Enum의 주요 메서드

  • values() : Enum 상수들의 배열 반환
  • valueOf() : 주어진 이름과 일치하는 ENUM 상수 반환
  • name() : Enum 상수의 이름을 문자열로 반환
  • toString() : Enum의 상수 이름을 문자열로 반환 name과의 차이점 : 직접 오버라이드 가능
참고 사항
  • static import 사용시 더 간결한 코드 작성 가능
  • class이기 때문에 안에 메서드 작성, 비즈니스 로직 작성 가능