java - 从覆盖的枚举中删除重复的代码
问题描述
我有一个DP enum
withA
和B
enum
constants 最初有不同的abstract
方法实现someMethod()
。理想情况下,我们会将A
and合并B
为一个enum
常量。但是,出于商业原因,这不是一个选择。我试图找出一种方法来制作enum
常量A
并B
共享相同的抽象方法someMethod()
实现。
public enum DP {
A {
@Override
public void someMethod(){
// Duplicate code
}
},
B {
@Override
public void someMethod(){
// Duplicate code
}
},
C {
@Override
public void someMethod(){
// Different code
}
};
public abstract void someMethod();
}
解决方案
如果我正确理解了您的问题,而不是abstract
方法,您可以在方法中添加重复的代码并仅在以下位置覆盖该方法C
:
public enum DP {
A,
B,
C {
@Override
public void someMethod() {
// Different code
System.out.println("C");
}
};
public void someMethod() {
//Duplicate code
System.out.println("AB");
}
}
然后:
DP.A.someMethod();
DP.B.someMethod();
DP.C.someMethod();
输出:
AB
AB
C
推荐阅读
- openlayers - OpenLayers 按百分比增加或减少范围
- java - JComponent.repaint() 没有响应
- flutter - 如何在 Flutter 中为文本字段自动显示键盘
- python - 相当于 pandas 中的有、滞后或类似的
- sparse-matrix - 在 Accord.NET 中创建和使用稀疏矩阵
- javascript - 无法在“CSSStyleDeclaration”上执行“setProperty”:这些样式是计算出来的,因此“opacity”属性是只读的
- react-native - 如何在 react-native-navigation 底部标签栏中设置图标大小
- python - 在 TensorFlow 2 上实现 A3C
- javascript - js中是否存在类似'onImport'的东西?
- reactjs - React-Bootstrap Collapse 不适用于自定义组件