반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- junit5
- 자바문법
- 단위테스트
- java테스트
- input
- ArrayList
- 자바스크립트
- json
- 배열
- 인텔리제이
- js
- Eclipse
- HashMap
- Array
- math
- 문자열
- IntelliJ
- vscode
- CSS
- Java
- 테스트자동화
- list
- 정규식
- string
- javascript
- 자바
- Visual Studio Code
- html
- junit
- 이클립스
Archives
- Today
- Total
어제 오늘 내일
[Java] enum 사용법 및 실전 예제 본문
Java의 enum(열거형)은 한정된 값들의 집합을 표현할 때 사용하는 특별한 타입입니다.
예를 들어 요일, 상태값, 권한 등 “정해진 값만 존재해야 하는 상황”에서 매우 유용합니다.
enum을 사용하면 코드 안정성이 높아지고, switch문이나 상수 처리도 훨씬 직관적입니다.
1. enum 기본 사용법
enum은 클래스처럼 파일에 선언할 수 있으며, 여러 상수를 나열합니다.
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
사용:
Day today = Day.MONDAY;
특징
- 각 값은 객체처럼 취급됨
- 상수명을 모두 대문자로 작성하는 것이 관례
2. enum을 사용하는 이유
✔ 문자열/숫자 상수보다 안전
String day = "Fridyy"; // 오타 발생 가능
enum 사용 시:
Day day = Day.FRIDAY; // ✔ 오타 방지, 안전
✔ 제한된 값만 사용하도록 강제
- 유효하지 않은 값이 들어갈 위험 없음
- 타입 안정성(Type-Safety) 향상
✔ 비교가 빠르고 안전
오타가 나지 않으며 equals가 아닌 == 비교도 가능
3. enum과 switch문
enum은 switch문에서 매우 자주 사용됩니다.
Day today = Day.FRIDAY;
switch (today) {
case MONDAY:
System.out.println("월요일입니다");
break;
case FRIDAY:
System.out.println("드디어 금요일!");
break;
default:
System.out.println("평일 or 주말");
}
4. enum에 필드와 메서드 추가하기
enum은 단순 상수 집합이 아니라 클래스처럼 필드, 생성자, 메서드도 가질 수 있습니다.
public enum Status {
READY("준비"),
RUNNING("진행중"),
DONE("완료");
private final String description;
Status(String description) { // 생성자
this.description = description;
}
public String getDescription() {
return description;
}
}
사용:
Status s = Status.READY;
System.out.println(s.getDescription()); // 준비
설명
- 각 enum 상수마다 다른 값을 부여할 수 있음
5. enum에 메서드를 선언하여 동작 정의하기
public enum Operation {
ADD {
public int apply(int x, int y) { return x + y; }
},
SUBTRACT {
public int apply(int x, int y) { return x - y; }
};
public abstract int apply(int x, int y);
}
사용:
int result = Operation.ADD.apply(3, 5);
System.out.println(result); // 8
설명
- enum 상수별로 다른 동작을 정의할 수 있음
6. enum과 Singleton 패턴
enum은 간단하고 안전한 싱글턴 패턴 구현에도 활용됩니다.
public enum Singleton {
INSTANCE;
public void doSomething() {
System.out.println("싱글턴 동작");
}
}
사용:
Singleton.INSTANCE.doSomething();
장점
- 직렬화 문제 해결
- 리플렉션 공격 방어
- 가장 안전한 싱글턴 구현 방식
7. 실전 예제: 주문 상태 관리
public enum OrderStatus {
NEW, PROCESSING, SHIPPED, DELIVERED, CANCELED
}
사용:
public void handleOrder(OrderStatus status) {
switch (status) {
case NEW:
System.out.println("신규 주문");
break;
case PROCESSING:
System.out.println("처리 중");
break;
case SHIPPED:
System.out.println("배송 중");
break;
case DELIVERED:
System.out.println("배송 완료");
break;
case CANCELED:
System.out.println("취소됨");
break;
}
}
8. 실전 예제: Role(권한) 처리
public enum Role {
USER(1),
ADMIN(2);
private final int level;
Role(int level) {
this.level = level;
}
public int getLevel() {
return level;
}
}
사용:
Role r = Role.ADMIN;
if (r.getLevel() >= 2) {
System.out.println("관리자 권한 접근 가능");
}
9. 정리
- enum은 타입 안전성을 가진 상수 집합
- switch문과 함께 자주 사용
- 필드·생성자·메서드를 추가해 확장 가능
- 동작이 다른 상수를 만들어 전략 패턴처럼 사용 가능
- 싱글턴 구현에도 활용 가능
반응형
'IT > Java' 카테고리의 다른 글
| [Java] 제네릭(Generic) 기본 개념과 예제 (0) | 2025.12.31 |
|---|---|
| [Java] 패키지(package)와 import 구조 이해 (0) | 2025.12.30 |
| [Java] 익명 클래스(anonymous class) 사용 예제 (0) | 2025.12.29 |
| [Java] 내부 클래스(inner class) 종류와 사용법 (0) | 2025.12.29 |
| [Java] 메서드 오버라이딩 규칙 정리 (0) | 2025.12.28 |
Comments
