Enum
<aside> 🛣️
설명
예제
<aside> 🧸
설명
public enum Grade {
BASIC, GOLD, DIAMOND
}
열거형 확인

package enumm;
public class EnumRefMain {
public static void main(String[] args) {
System.out.println("class BASIC : " + Grade.BASIC.getClass());
System.out.println("class GOLD : " + Grade.GOLD.getClass());
System.out.println("class DIAMAND : " + Grade.DIAMOND.getClass());
System.out.println("ref BASIC = " + refValue(Grade.BASIC));
System.out.println("ref GOLD = " + refValue(Grade.GOLD));
System.out.println("ref DIAMAND : " + refValue(Grade.DIAMOND));
}
private static String refValue(Object grade) {
return Integer.toBinaryString(System.identityHashCode(grade));
}
}
출력
class BASIC : class enumm.Grade
class GOLD : class enumm.Grade
class DIAMAND : class enumm.Grade
ref BASIC = 11101100000011110101110010011
ref GOLD = 1110010100100011100000110001111
ref DIAMAND : 110100101000100100010110101011
출력 값에서 확인 가능하듯이 선언한 타입이 Grade 타입을 사용하는 것을 확인 가능
--------------------------------------
package enumm;
public class DiscountService {
public int discount(Grade grade, int price) {
int discountPercent = 0;
if (grade == Grade.BASIC) {
discountPercent = 10;
} else if (grade == Grade.GOLD) {
discountPercent = 20;
} else if (grade == Grade.DIAMOND) {
discountPercent = 30;
} else {
System.out.println("할인 x");
}
return price * discountPercent / 100;
}
}
-----------------------------------
package enumm;
public class EnumEx3_1 {
public static void main(String[] args) {
int price = 10000;
DiscountService discountService = new DiscountService();
//열거형 생성
int basic = discountService.discount(Grade.BASIC, price);
int gold = discountService.discount(Grade.GOLD, price);
int diamond = discountService.discount(Grade.DIAMOND,price);
System.out.println("BASIC 등급의 할인 금액 : " + basic);
System.out.println("GOLD 등급의 할인 금액 : " + gold);
System.out.println("DIAMOND 등급의 할인 금액 : " + diamond);
}
}
BASIC 등급의 할인 금액 : 1000
GOLD 등급의 할인 금액 : 2000
DIAMOND 등급의 할인 금액 : 3000
</aside>
열거형 외부 생성
<aside> 🔗
설명
열거형 생성 정상
---------------
DiscountService discountService = new DiscountService();
//열거형 생성
int basic = discountService.discount(Grade.BASIC, price);
열거형 외부 생성 -> 불가능
-------------------------
DiscountService discountService = new DiscountService();
Grade myGrade = new Grade();
double result = discountService.discount(myGrade, price);
System.out.println("result price : " + result);
</aside>