[Spring] ENUM

보람·2023년 5월 8일
0

Spring

목록 보기
17/18

📋 ENUM

(1) ENUM이란

  • Enumeration Type(열거타입)
    • 데이터 중에서 요일(월,화,수,목,금,토,일), 계절(봄,여름,가을,겨울) 등과 같이 몇 가지 한정된 값을 갖는 경우
    • 요일, 계절등과 같이 한정된 데이터만을 가지는 타입
  • Enumeration constant(열거 상수)
    • 월, 화, 수, 등 열거되는 값
  • 네이밍 방법
    • 타입 이름
      • 첫 글자를 대문자로 하여 생성
    • 열거상수
      • 대문자로 작성
      • 2개의 단어로 연결 되어 있을 때는 _로 연결

(2) ENUM의 장점

  • 코드가 단순해지며 가독성이 좋아짐
  • 인스턴스 생성과 상속을 방지하여 상수값의 안정성이 보장됨
  • enum 예약어를 사용하므로 열거 의도를 분명히 함

(3) ENUM과 메모리 구조

  • 열거 상수는 상수 각각을 내부적으로 public static final 필드이면서 객체로 제공되도록 함
  • static이 붙어있음
    • 각각의 상수는 클래식 변수
    • 클래스로더가 로드 시점에 JVM 메소드 영역에 해당 클래스 변수들을 항상 상주시킴
    • 프로그램이 종료되기 전에는 언제든지 가져다 쓸 수 있는 주소공간을 확보

(4) ENUM 사용

1) 단순 열거

◾ ENUM

	public enum Week {
	
		MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
		
		public void dayInfo() {
			System.out.println("dayInfo enum");
		}
	}

◾ 구현

	public static void main(String[] args) {
		Week today = Week.FRIDAY;
		System.out.println(today);
	
		// enum에서 지정한 메서드 불러오려면 열거상수 먼저 불러와야 함
		Week.MONDAY.dayInfo();
	}

◾ 결과

2) 이름과 값 부여

◾ ENUM

	public enum Type {
	
		// static final String WALKING = "워킹화";
        // -> 보기 편하게 만든 클래스가 ENUM 
        // -> 1.5버전부터 쓰기 시작한 것
		WALKING("워킹화"),
		RUNNING("등산화"),
		TRACKING("트래킹화"),
		HIKING("등산화");
		
		final private String name;
		
		private Type(String name) {
			this.name = name;
		}
		
		public String getName() {
			return name;
		}
	}

◾ 구현

	public static void main(String[] args) {
		for( Type type : Type.values()) {
			System.out.println(type.getName());
		}
	}

◾ 결과

3) JPA에서 사용

  • @Enumerated(EnumType.데이터 타입) 사용

◾ ENUM

	public enum OrderStatus {
		ORDER, CANCEL;
	}

◾ Order.java

	// 주문상태 (Order, Cancel)
	@Enumerated(EnumType.STRING)
	private OrderStatus status;
profile
안녕하세요, 한보람입니다.

0개의 댓글