假设有一个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