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. ์—ด๊ฑฐํ˜•์˜ ์žฅ์  ์š”์•ฝ

์ปดํŒŒ์ผ ์‹œ ์˜ค๋ฅ˜ ๊ฒ€์ถœ: ์ž˜๋ชป๋œ ๊ฐ’ ์‚ฌ์šฉ์„ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ๋ฐฉ์ง€.

์ฝ”๋“œ ๊ฐ€๋…์„ฑ ์ฆ๊ฐ€: ์ฝ”๋“œ์—์„œ ๊ฐ’์˜ ์˜๋ฏธ๋ฅผ ๋ช…ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ์Œ.

ํ™•์žฅ์„ฑ: ์ƒˆ ์ƒ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์‰ฌ์›€.

์ค‘๋ณต ์ฝ”๋“œ ๊ฐ์†Œ: ๊ณตํ†ต๋œ ๋™์ž‘๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ถ€์—์„œ ๊ด€๋ฆฌ.


์ž๋ฐ”์˜ ์—ด๊ฑฐํ˜•์€ ๊ธฐ์กด์˜ ํƒ€์ž… ์•ˆ์ „ ์—ด๊ฑฐํ˜• ํŒจํ„ด์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์ด๋‹ค.
๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ƒํƒœ, ๋“ฑ๊ธ‰, ์ฝ”๋“œ ๋“ฑ์„ ๊ด€๋ฆฌํ•  ๋•Œ ํŠนํžˆ ์œ ์šฉํ•˜๋‹ค.
์—ด๊ฑฐํ˜•์„ ์ ์ ˆํžˆ ํ™œ์šฉํ•˜์—ฌ ์ฝ”๋“œ์˜ ์•ˆ์ „์„ฑ๊ณผ ๊ฐ€๋…์„ฑ์„ ๋ชจ๋‘ ํ–ฅ์ƒ์‹œํ‚ค๋Š”๊ฒƒ์ด ์ข‹๋‹ค!

+ Recent posts