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 |