Java & Spring/Java

Enum의 개념과 사용

승주우에요 2026. 1. 7. 20:25

1. Enum이란 무엇인가

Enum은 서로 관련 있는 상수들을 하나의 타입으로 묶어서 표현하는 자바의 타입입니다. 즉, Enum은 단순한 상수 모음이 아닌 타입 그 자체이다. 

public enum OrderStatus {
    READY, PAID, SHIPPED, DONE
}

 

2. Enum이 필요한 이유

기존 상수 방식의 문제점

public static final int READY = 0;
public static final int PAID = 1;
  • 의미를 알기 어렵다 (매직 넘버)
  • 잘못된 값이 들어와도 컴파일 오류가 발생하지 않는다
  • 유지 보수가 어려움

Enum이 해결

  • 타입 안정성 : 정해진 값만 사용할 수 있다
  • 의미 있는 코드 : 숫자 대신 의미가 드러나는 이름 사용
  • 컴파일 타임 오류 검출
OrderStatus status = OrderStatus.PAID; // OK
OrderStatus status = 3; // 컴파일 에러

-> 잘못된 값은 애초에 들어올 수 없게 만든다 !!

 

3. Enum의 정의 및 기본 사용법

기본 선언 방식

public enum Direction {
	NORTH, SOUTH, EAST, WEST
}
  • enum 키워드 사용
  • 내부 값은 , 로 구분
  • 관례적으로 대문자 사용

변수 선언 및 사용

Direction dir = Direction.NORTH;
  • Enum 값은 EnumType.VALUE 형태로 접근
  • new 키워드 사용 불가

4. Enum의 주요 메서드

 

values()

: 모든 Enum 값을 배열로 반환함

for (Direction d : Direction.values()){
	System.out.println(d);
}

 

valueOf(String name)

: 문자열과 일치하는 Enum 값을 반환함

Direction dir = Direction.valueOf("NORTH);

 

name()

: Enum에 정의된 이름을 문자열로 반환함

System.out.println(Direction.North.name());

 

ordinal()

: Enum 선언 순서에 따른 정수 값 반환

System.out.println(Direction.NORTH.ordinal()); //0

 

5. Enum 비교 방법

Enum은 싱글톤 인스턴스이기 때문에 == 비교가능하다.

 

6. Enum을 언제 사용해야 할까?

  • 값의 후보가 명확히 제한되어 있을 때
  • 상태, 타입, 역할, 카테고리를 표현할 때
  • if-else / switch 분기가 반복될 때
  • ex) 주문 상태, 사용자 권한 , 요일 등등

7. 정리

  • Enum은 상수를 안전하게 관리하기 위한 타입
  • 단순 편의 기능이 아닌 설계 도구
  • 잘못된 값을 원천 차단한다는 점이 가장 큰 장점

'Java & Spring > Java' 카테고리의 다른 글

예외 처리 문법  (0) 2026.01.07
예외 개념과 자바 예외 구조  (0) 2026.01.07
내부 클래스(Inner Class)  (0) 2026.01.07
추상화  (0) 2026.01.07
SOLID 원칙  (0) 2026.01.06