Item 34. Enum
μ΄κ±° νμ
public enum Apple {
FUJI, PIPPIN, GRANNY_SMITH
}λ©μλμ νλ μΆκ°
enum Operation {
PLUS("+") {
@Override
public double apply(double x, double y) {
return x + y;
}
},
MINUS("-") {
@Override
public double apply(double x, double y) {
return x - y;
}
},
TIMES("*") {
@Override
public double apply(double x, double y) {
return x * y;
}
},
DIVIDE("/") {
@Override
public double apply(double x, double y) {
return x / y;
}
};
private final String symbol;
Operation(String symbol) {
this.symbol = symbol;
}
// μΆμ λ©μλλ‘ κ° μμμμ λ€λ₯Έ λμμ μννλλ‘ ν¨
public abstract double apply(double x, double y);
// μΌλ° λ©μλλ‘ ν΄λΉ μμμ νλλ₯Ό λ°ννλλ‘ ν¨
public String getSymbol() {
return symbol;
}
// static λ©μλλ‘ λ¬Έμμ΄μ λ°μ ν΄λΉ λ¬Έμμ΄μ κ°μ§λ μμλ₯Ό λ°ννλλ‘ ν¨
public static Operation fromString(String symbol) {
return Arrays.stream(values())
.filter(op -> op.symbol.equals(symbol))
.findFirst()
.orElseThrow(IllegalArgumentException::new);
}
// toString λ©μλλ₯Ό μ¬μ μνμ¬ ν΄λΉ μμμ νλλ₯Ό λ°ννλλ‘ ν¨
@Override
public String toString() {
return getSymbol();
}
}
class Main {
public static void main(String[] args) {
double x = 10;
double y = 5;
for (Operation op : Operation.values()) {
System.out.printf("%f %s %f = %f%n", x, op, y, op.apply(x, y));
}
}
}μ λ΅ μ΄κ±° νμ
ν¨ν΄(Strategy Enum Pattern)
Last updated