java enum은 메모리에 언제, 어떻게 할당되는가
package calculator.entity;
import common.Constant;
import java.util.Arrays;
import java.util.function.BiFunction;
public enum OperationType {
PLUS(Constant.OPERATION_PLUS, (param1, param2) -> param1 + param2),
MINUS(Constant.OPERATION_MINUS, (param1, param2) -> param1 - param2),
MULTIPLE(Constant.OPERATION_MULTIPLE, (param1, param2) -> param1 * param2),
DIVIDE(Constant.OPERATION_DIVIDE, (param1, param2) -> param1 / param2);
private String operator;
private BiFunction<Long, Long, Long> formula;
OperationType(String operator, BiFunction<Long, Long, Long> formula) {
this.operator = operator;
this.formula = formula;
}
public static Long calculate(String operator, Long parma1, Long param2) {
return getOperationType(operator)
.formula
.apply(parma1, param2);
}
private static OperationType getOperationType(String operator) {
return Arrays.stream(values())
.filter(value -> value.operator.equals(operator))
.findFirst()
.orElseThrow(() -> new IllegalArgumentException(Constant.NOT_EXIST_OPERATOR_TYPE_MESSAGE));
}
}Previous상태(state), 상속(inheritance), 합성(composition) 의 상관관계NextChecked Exception vs UnChecked Exception
Last updated