
1. ์ด๊ฑฐํ(Enum)์ด๋?
- ์ด๊ฑฐํ์ ํน์ ๊ฐ๋ค์ ์งํฉ์ ์ ์ํ๋ ํด๋์ค์ ํน๋ณํ ํํ์ด๋ค.
- ํ์ ์์ ์ฑ์ ์ ๊ณตํ๊ณ , ์ฝ๋ ๊ฐ๋ ์ฑ์ ๋์ด๋ฉฐ, ์์ ๊ฐ๋ฅํ ๊ฐ๋ค์ ์งํฉ์ ํํํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
์ฃผ์ ํน์ง:
- ํด๋์ค์ฒ๋ผ ๋์ํ๋ฉฐ, java.lang.Enum์ ์๋์ผ๋ก ์์๋ฐ๋๋ค.
- ์ฌ์ ์ ์ ์๋ ์์๋ค๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ, ์๋ชป๋ ๊ฐ ์ ๋ ฅ์ ๋ฐฉ์งํ๋ค.
2. ์ ์ด๊ฑฐํ์ ์ฌ์ฉํ๋๊ฐ?
2.1 ํ์ ์์ ์ฑ ํฅ์ :
๋ฌธ์์ด์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ฐ์ํ ์ ์๋ ์คํ๋ ์ ํจํ์ง ์์ ๊ฐ ์ ๋ ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
2.2 ๋ฐ์ดํฐ ์ผ๊ด์ฑ ๋ณด์ฅ :
์ ์๋ ๊ฐ ์ธ์๋ ํ์ฉํ์ง ์์ผ๋ฏ๋ก ์ผ๊ด์ฑ์ ์ ์งํ๋ค.
2.3 ๊ฐ๋ ์ฑ :
ํน์ ๊ฐ์ ๋ํด ์๋ฏธ๋ฅผ ๋ถ์ฌํ ์ ์์ด ์ฝ๋๊ฐ ๋ ๋ช ํํด์ง๋ค.
3. ์ด๊ฑฐํ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
public enum Grade {
BASIC, GOLD, DIAMOND
}
- BASIC, GOLD, DIAMOND๋ ๊ฐ๊ฐ ์ด๊ฑฐํ ์์์ด๋ค.
- ์ด๊ฑฐํ์ ์์๋ ๋๋ฌธ์๋ก ํ๊ธฐํ๋ ๊ฒ์ด ๊ด๋ก์ด๋ค.
4. ์ด๊ฑฐํ์ ์ฃผ์ ๋ฉ์๋
- values() : ๋ชจ๋ ์ด๊ฑฐํ ์์๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํํ๋ค.
- valueOf(String name) : ๋ฌธ์์ด์ ํด๋น ์ด๊ฑฐํ ์์๋ก ๋ณํํ๋ค.
- name() : ์ด๊ฑฐํ ์์์ ์ด๋ฆ์ ๋ฐํํ๋ค.
- ordinal() : ์ด๊ฑฐํ ์์์ ์ ์ธ ์์๋ก ๋ฐํํ๋ค. (์ฃผ์: ์๋ชป ์ฌ์ฉ ์ ๋ฐ์ดํฐ ๋ถ์ผ์น ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์)
์์
Grade[] grades = Grade.values();
for (Grade grade : grades) {
System.out.println("Name: " + grade.name() + ", Ordinal: " + grade.ordinal());
}
5. ์ด๊ฑฐํ๊ณผ ๋น์ฆ๋์ค ๋ก์ง ๊ฒฐํฉ
์ด๊ฑฐํ ๋ด๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ฉ์๋๋ฅผ ์ ์ํ ์ ์๋ค.
public enum Grade {
BASIC(10), GOLD(20), DIAMOND(30);
private final int discountPercent;
Grade(int discountPercent) {
this.discountPercent = discountPercent;
}
public int getDiscountPercent() {
return discountPercent;
}
public int calculateDiscount(int price) {
return price * discountPercent / 100;
}
}
์ฌ์ฉ ์ :
int price = 10000;
System.out.println("GOLD ๋ฑ๊ธ์ ํ ์ธ ๊ธ์ก: " + Grade.GOLD.calculateDiscount(price));
6. ์ด๊ฑฐํ ํ์ฉ ์ฌ๋ก
6.1 ์ธ์ฆ ๋ฑ๊ธ ๊ด๋ฆฌ
public enum AuthGrade {
GUEST(1, "์๋"),
LOGIN(2, "๋ก๊ทธ์ธ ํ์"),
ADMIN(3, "๊ด๋ฆฌ์");
private final int level;
private fianl String description;
AuthGrade(int level, String description) {
this.level = level;
this.description = description;
}
public int getLevel() {
return level;
}
public String getDescription() {
return description;
}
}
๋ฑ๊ธ๋ณ ๋ฉ๋ด ์ถ๋ ฅ:
Scanner scanner = new Scanner(System.in);
System.out.print("๋น์ ์ ๋ฑ๊ธ์ ์
๋ ฅํ์ธ์.[GUEST, LOGIN, ADMIN] : ");
String grade = scanner.nextLine();
AuthGrade authGrade = AuthoGrade.valueOf(grade.toUpperCase());
System.out.println("๋น์ ๋ฑ๊ธ์ " + authGrade.getDescription() + "์
๋๋ค.");
if (authGrade.getLevel() >= 1) System.out.println(" - ๋ฉ์ธ ํ๋ฉด");
if (authGrade.getLevel() >= 2) System.out.println("- ์ด๋ฉ์ผ ๊ด๋ฆฌ ํ๋ฉด");
if (authGrade.getLevel() >= 3) System.out.println("- ๊ด๋ฆฌ์ ํ๋ฉด");
7. ์ด๊ฑฐํ์ผ๋ก HTTP ์ํ ๊ด๋ฆฌ
public enum HttpStatus {
OK(200, "OK"),
BAD_REQUEST(400, "Bad Request"),
NOT_FOUND(404, "Not Found"),
INTERNAL_SERVER_ERROR(500, "Internal Server Error");
private final int code;
private final String message;
HttpStatus(int code, String message) {
this.code = code;
this.message = message;
}
public static HttpStatus findByCode(int code) {
for (HttpStatus status : values()) {
if (status.code == code) return status;
}
return null;
}
public boolean isSuccess() {
return code >= 200 && code <= 299;
}
}
์ฌ์ฉ ์:
HttpStatus status = HttpStatus.findByCode(200);
System.out.println(status.getCode() + " " + status.getMessage());
System.out.println("isSuccess: " + status.isSuccess());
8. ์ด๊ฑฐํ์ ์ฅ์ ์์ฝ
• ์ปดํ์ผ ์ ์ค๋ฅ ๊ฒ์ถ: ์๋ชป๋ ๊ฐ ์ฌ์ฉ์ ์ปดํ์ผ ๋จ๊ณ์์ ๋ฐฉ์ง.
• ์ฝ๋ ๊ฐ๋ ์ฑ ์ฆ๊ฐ: ์ฝ๋์์ ๊ฐ์ ์๋ฏธ๋ฅผ ๋ช ํํ ์ ์ ์์.
• ํ์ฅ์ฑ: ์ ์์๋ฅผ ์ถ๊ฐํ๊ธฐ ์ฌ์.
• ์ค๋ณต ์ฝ๋ ๊ฐ์: ๊ณตํต๋ ๋์๊ณผ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ถ์์ ๊ด๋ฆฌ.
์๋ฐ์ ์ด๊ฑฐํ์ ๊ธฐ์กด์ ํ์ ์์ ์ด๊ฑฐํ ํจํด์ ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์๋๋ก ์ง์ํ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ด๋ค.
๋น์ฆ๋์ค ๋ก์ง์์ ์์ฃผ ์ฌ์ฉ๋๋ ์ํ, ๋ฑ๊ธ, ์ฝ๋ ๋ฑ์ ๊ด๋ฆฌํ ๋ ํนํ ์ ์ฉํ๋ค.
์ด๊ฑฐํ์ ์ ์ ํ ํ์ฉํ์ฌ ์ฝ๋์ ์์ ์ฑ๊ณผ ๊ฐ๋ ์ฑ์ ๋ชจ๋ ํฅ์์ํค๋๊ฒ์ด ์ข๋ค!