62,614
社区成员
发帖
与我相关
我的任务
分享
public class Test {
public static void main(String[] args) {
double num1 = 30;
double num2 = 15;
System.out.println("加: " + Operation.getInstance("+").eval(num1, num2));
System.out.println("减: " + Operation.getInstance("-").eval(num1, num2));
System.out.println("乘: " + Operation.getInstance("*").eval(num1, num2));
System.out.println("除: " + Operation.getInstance("/").eval(num1, num2));
}
}
import java.util.HashMap;
import java.util.Map;
public abstract class Operation {
private static Map<String, Operation> register = new HashMap<String, Operation>();
private Operation(String operator) {
register.put(operator, this);
}
public final static Operation ADD = new Operation("+") {
protected double eval(double left, double right) {
return left + right;
}
};
public final static Operation SUBTRACTION = new Operation("-") {
protected double eval(double left, double right) {
return left - right;
}
};
public final static Operation MULIPLICATION = new Operation("*") {
protected double eval(double left, double right) {
return left * right;
}
};
public final static Operation DIVISION = new Operation("/") {
protected double eval(double left, double right) {
return left / right;
}
};
public static Operation getInstance(String operator) {
Operation op = register.get(operator);
if (op == null) {
throw new IllegalArgumentException("不能进行 " + operator + " 运算");
}
return op;
}
protected abstract double eval(double left, double right);
}
既然继承了,就不用再写
public int addNumber(int x,int y)
{
int i=add(x,y);
return i;
}