이전 포스팅에서는, EnumGrade 클래스와 DiscountGrade 클래스를 리팩토링해서 줄였다.
이제 메인 메서드를 줄여볼 차례이다.

bronze~diamond 까지 동일한 코드가 반복적이다.
Enum 클래스를 사용하면 ".values()"를 통해서 각 등급을 배열로 처리해서 BRONZE(0인덱스)~DIAMOND(3인덱스) 에 넣을 수 있다.
해서 요내용을 반복문(루프)를 통해서 배열을 출력과 동시에 줄여준다 .
package thisjavaexam.enumtest.enumis;
public class GradePriceMain {
public static void main(String[] args) {
int price = 20000;
//각 등급을 배열로 집어넣어 처리하면서 출력까지 진행
EnumGrade[] grade = EnumGrade.values();
for(int i = 0 ; i < grade.length; i ++) {
//아래 매서드를 선언해서 등급 ,가격을 불러온다.
printDiscountPercent(grade[i],price);
}
}
// enum 상수는 static이므로, 메모리를 메서드영역에서 불러와야 하기때문에 static 메서드에서 직접 접근 가능해야 한다.
public static void printDiscountPercent(EnumGrade grade,int price) {
System.out.println(grade.name() + " 의 할인율 적용 금액은 " + price + "입니다.");
}
}
나머지 기존코드도 추가 업로드
package thisjavaexam.enumtest.enumis;
public enum EnumGrade {
//각각 퍼센트를 직접 기입할 수 있다.
BRONZE(5),
SILVER(10),
GOLD(15),
DIAMOND(20);
//할인율 변수를 선언하는데 final 이기에 앞으로 들어올 값을 위해 초기화 하지 않았다.
private final int discountPercent;
//이제 이 클래스의 생성자를 만들고
EnumGrade(int discountPercent) {
this.discountPercent = discountPercent;
}
//getter를 통해서 외부에서 접근하도록 한다.
public int getDiscountPercent() {
return discountPercent;
}
//최종 결과 값의 할인율을 계산해서 리턴한다.
public int finalPrice(int price) {
return price * discountPercent / 100;
}
}
package thisjavaexam.enumtest.enumis;
public class DiscountGrade {
// 메인클래스에서 넘어올 가격만 받아서 할인율은 EnumGrade 클래스로 토스한다.
public int discountPercent(EnumGrade grade, int price) {
return grade.finalPrice(price);
}
}
3개의 클래스로 정리했다.
이제 배열로 처리하도록 작업했으니, 다른 등급도 enum클래스에 할인율과 함께 추가할수 있다.

vip만 30% 추가해서 실행결과

엥??...
이런 버그쟁이 ...

public static void printDiscountPercent(EnumGrade grade,int price) {
System.out.println(grade.name() + " 의 할인율 적용 금액은 " + grade.finalPrice(price) + "입니다.");
}
자꾸 사소한 실수해버린다 .

Enum 학습 우선 여기까지! ..
참고로 학습한 내용을 참조하여 다시 구성한 코드입니다.
'Java_library > Enumeration' 카테고리의 다른 글
| (Java_library) Enum을 사용하는이유_enum사용 후 리팩토링1 (0) | 2025.05.06 |
|---|---|
| (Java_library) Enum을 사용하는이유_enum사용2 (0) | 2025.05.06 |
| (Java_library) Enum을 사용하는이유_enum사용1 (0) | 2025.05.06 |
| (Java_library) Enum을 사용하는이유_enum사용전2 (0) | 2025.05.06 |
| (Java_library) Enum을 사용하는이유_enum사용전1 (0) | 2025.05.06 |










