java - Java枚举多个键映射到单个方法
问题描述
我正在从这里查看这段代码:
enum Operator {
ADD {
@Override int execute(final int num1, final int num2) {
return num1 + num2;
}
},
SUBTRACT {
@Override int execute(final int num1, final int num2) {
return num1 - num2;
}
},
MULTIPLY {
@Override int execute(final int num1, final int num2) {
return num1 * num2;
}
},
DIVIDE {
@Override int execute(final int num1, final int num2) {
if (num2 != 0) {
return num1 / num2;
} else {
System.out.println("Can't divide by zero.");
}
return 0;
}
};
abstract int execute(int num1, int num2);
}
public class EnumWithoutDefinedFunctions {
public static void main(String[] args) {
int num1 = 10;
int num2 = 2;
Operator operator = Operator.DIVIDE;
int result = operator.execute(num1, num2);
System.out.println("result: " + result);
}
}
我正在寻找一种使用不同键调用相同方法的方法。例如,两者都ADD
应该ADD2
执行相同的实现,即
ADD,ADD2 {
@Override int execute(final int num1, final int num2) {
return num1 + num2;
}
},
但是,上述对代码的更改会导致以下错误:
解决方案
我找到了一种解决方法,不确定这是否是优化的解决方案,即创建一个方法,然后为需要相同实现的键调用相同的方法:
public class EnumTest {
enum Operator {
ADD {
@Override int execute(final int num1, final int num2) {
return addImpl( num1,num2);
}
},
ADD2 {
@Override int execute(final int num1, final int num2) {
return addImpl( num1,num2);
}
},
SUBTRACT {
@Override int execute(final int num1, final int num2) {
return num1 - num2;
}
},
MULTIPLY {
@Override int execute(final int num1, final int num2) {
return num1 * num2;
}
},
DIVIDE {
@Override int execute(final int num1, final int num2) {
if (num2 != 0) {
return num1 / num2;
} else {
System.out.println("Can't divide by zero.");
}
return 0;
}
};
private static int addImpl(int num1, int num2){
return num1 + num2;
}
abstract int execute(int num1, int num2);
}
public static void main(String[] args) {
int num1 = 10;
int num2 = 2;
Operator operator = Operator.ADD2;
int result = operator.execute(num1, num2);
System.out.println("result: " + result);
}
}
推荐阅读
- java - 如何使位图上的图像更小?
- c++ - ROS包装套件安装问题
- react-native - 如何在 React Native 应用中添加会所等语音聊天功能?
- processmaker - processmaker中的触发器或Javascript?
- python - 如何编写脚本以在按下转义键时单击组合框输入框
- optimization - Gurobi 计数:将约束设置为网格值的百分比
- swift - Xcode & Swift Playgrounds 空控制台
- google-apps-script - 是否可以从外部查看作为应用程序发布的 GAS 代码?
- python - 类型错误:预测()缺少 1 个必需的位置参数:'y_train'
- node.js - Angular“npm i”不支持的引擎错误消息