假設有一個ENUM枚舉作爲運算
enum Operations {
ADD,
SUBTRACT,
MULTIPLY
}
我想用這個枚舉兩個數字(比如5和3),得到輸出添加爲8 或 我想用這個枚舉減去兩個數字(比如9和3),得到輸出爲6
問:
- 這可能嗎?
- 如果是,那麼要對此枚舉進行哪些修改?
假設有一個ENUM枚舉作爲運算
enum Operations {
ADD,
SUBTRACT,
MULTIPLY
}
我想用這個枚舉兩個數字(比如5和3),得到輸出添加爲8 或 我想用這個枚舉減去兩個數字(比如9和3),得到輸出爲6
問:
enum
S可有抽象方法,每個成員都可以有不同的實現它。
enum Operations {
ADD {
public double apply(double a, double b) { return a + b; }
},
SUBTRACT {
public double apply(double a, double b) { return a - b; }
},
MULTIPLY {
public double apply(double a, double b) { return a * b; }
},
;
public abstract double apply(double a, double b);
}
將允許你這樣做
Operations op = ...;
double result = op.apply(3, 5);
您可以使用枚舉值開關:
switch (operator) {
case ADD:
ret = a + b;
break;
case SUBTRACT:
ret = a - b;
break;
case MULTIPLY:
ret = a * b;
break;
}
您應該使用枚舉作爲標誌進行什麼操作:
public int computeOperation(int leftOperand, Operation op, int rightOperand) {
switch(op) {
case ADD:
return leftOperand + rightOperand;
case SUBTRACT:
return leftOperand - rightOperand;
case MULTIPLY:
return leftOperand * rightOperand;
}
return null;
既然你回來了每一種情況下,你不需要擔心通過。
如何使用JAVA 8個特點:
enum Operation implements DoubleBinaryOperator {
PLUS ("+", (l, r) -> l + r),
MINUS ("-", (l, r) -> l - r),
MULTIPLY("*", (l, r) -> l * r),
DIVIDE ("/", (l, r) -> l/r);
private final String symbol;
private final DoubleBinaryOperator binaryOperator;
private Operation(final String symbol, final DoubleBinaryOperator binaryOperator) {
this.symbol = symbol;
this.binaryOperator = binaryOperator;
}
public String getSymbol() {
return symbol;
}
@Override
public double applyAsDouble(final double left, final double right) {
return binaryOperator.applyAsDouble(left, right);
}
}
很好的答案,+1。 – Perception 2012-03-13 03:54:39