// Enum 클래스
public int getMoney() {
return money;
}
// Test 코드
@Test
void test() {
Menu tea = Menu.TEA;
int result = tea.getMoney();
Assertions.assertThat(result).isEqualTo(5500);
}
System.out.println(Arrays.toString(Menu.values()));
// 출력 : [AMERICANO, CAFE_LATTE, CAFE_MOCHA, CAPPUCCINO, TEA]
// Enum 클래스
public static Menu getMenuByKorean(String korean) {
return Arrays.stream(values()) // values() : 모든 Enum 타입 리스트 반환
.filter(i -> korean.equals(i.korean))
.findFirst()
.orElse(null);
}
// Test 코드
@Test
void test() {
Menu findMenu = Menu.getMenuByKorean("아메리카노");
Assertions.assertThat(findMenu).isEqualTo(Menu.AMERICANO);
}
// Enum 클래스
public static Boolean isMenuExist(String korean) {
return Arrays.stream(values())
.anyMatch(value -> korean.equals(value.korean));
}
// Test 코드
@Test
void test() {
Boolean isAmericanoExist = Menu.isMenuExist("아메리카노");
Boolean isMilkTeaExist = Menu.isMenuExist("밀크티");
Assertions.assertThat(isAmericanoExist).isTrue();
Assertions.assertThat(isMilkTeaExist).isFalse();
}
public enum Menu {
AMERICANO(4000, "아메리카노"),
CAFE_LATTE(4500, "카페라떼"),
CAFE_MOCHA(5000, "카페모카"),
CAPPUCCINO(6000, "카푸치노"),
TEA(5500, "티");
...
public int calculateMoney (int count){ //
return money * count;
}
}
@Test
void test3() {
int result = Menu.AMERICANO.calculateMoney(2);
Assertions.assertThat(result).isEqualTo(8000);
}
public enum Prize {
BASIC(i -> i),
DOUBLE(i -> i * 2),
BONUS(i -> i + 50),
DOUBLE_AND_BONUS(i -> i * 3);
private Function<Integer, Integer> expression;
Prize(Function<Integer, Integer> expression) {
this.expression = expression;
}
public Integer calculate(int count) {
return expression.apply(count);
}
}
@Test
void test() {
int resultDouble = Prize.DOUBLE.calculate(100);
int resultBONUS = Prize.BONUS.calculate(100);
Assertions.assertThat(resultDouble).isEqualTo(200);
Assertions.assertThat(resultBONUS).isEqualTo(150);
}
// String korean: 맞춘 구역 (“베이직”, "더블", "보너스", "더블보너스")
// int count: 몇번 맞췄는 지
void getResult(String korean, int count) {
int result;
if (korean.equals("베이직")) {
result = count;
} else if (korean.equals("더블")) {
result = count * 2;
} else if (korean.equals("보너스")) {
result = count + 50;
} else if (korean.equals("더블보너스")) {
result = count * 3;
}
return result;
}
public enum Prize {
BASIC("베이직", i -> i),
DOUBLE("더블", i -> i * 2),
BONUS("보너스", i -> i + 50),
DOUBLE_AND_BONUS("더블보너스", i -> i * 3);
private Function<Integer, Integer> expression;
private String korean;
Prize(String korean, Function<Integer, Integer> expression) {
this.korean = korean;
this.expression = expression;
}
public Integer calculate(int count) {
return expression.apply(count);
}
public static Integer calculateByKorean(String korean, int count) {
return Arrays.stream(values())
.filter(i -> i.korean.equals(korean))
.findFirst()
.orElse(null)
.calculate(count);
}
}
// String korean: 맞춘 구역 (“베이직”, "더블", "보너스", "더블보너스")
// int count: 몇번 맞췄는 지
Integer getResult(String korean, int count) {
return Prize.calculateByKorean(korean, count);
}