【发布时间】:2014-08-14 13:32:27
【问题描述】:
我有这个枚举:
public enum Operation {
ADD {
public double apply(double a, double b) {
return a + b;
}
},
SUBTRACT {
public double apply(double a, double b) {
return a - b;
}
}
} ;
public abstract double apply(double a, double b);
`}`
我想像这样实例化它:
Operation op=new Operation("+");
op.aply(2,3);//now use ADD
是否可以编写一个带有字符串参数的构造函数,告诉枚举要应用哪个操作?
【问题讨论】:
-
您错误地尝试将枚举元素视为普通的旧对象。枚举构造函数是隐式私有的(您不能将它们重新定义为其他任何东西)。你真正需要做的是
Operation.ADD.apply(2, 3); -
@JonK 添加查找是明智的,例如,如果您想从解析器调用它