我有一个具有不同变量的类,用户定义的枚举也是其中之一。 该类基本上代表表中的数据。
例如)
Class A {
private String x;
private String y;
private UserEnum z;
....
..
private UserEnum getField() {
....
}
private void addRow() {
// uses the UserEnum here
....
}
}
我有一个其他类(CLASS B),它具有与A类相同的功能(具有相同的方法和字段),除了我有一个不同的用户定义的枚举(例如UserEnum2)。 这两个枚举都有不同的常量。
避免这两个类中存在的重复代码的好设计是什么。 我是Enums的新手,我不确定如何真正概括上面提到的两个具有不同枚举的类(CLASS A和CLASS B)。
答案 0 :(得分:2)
使用commons字段和方法创建基类,然后使用其余字段和方法/
创建子类Class abstract Base {
private String x;
private String y;
....
..
private UserEnum getField() {
....
}
private abstract void addRow();
}
class A extends Base{
private UserEnum z;
...
}
class B extends Base{
private UserEnum2 z;
...
}
答案 1 :(得分:1)
我前一段时间用工具解决了这个问题。我处理它的方法是有一个通用的基类:
public class Table<Column extends Enum<Column> & Table.Columns> {
public interface Columns {
}
子类看起来像:
public class VersionTable extends Table<VersionTable.Column> {
public enum Column implements Table.Columns {
Version,
Alias;
}
他们通过enum
构造函数注册了他们的特定super(Columns)
。
显然,除了我可以在答案中发布之外还有更多内容,但请放心,使用此结构可以拥有一个完全类型安全的机制。
答案 2 :(得分:0)
团。将重复的方法委托给单个委托类,所有3个类(2个枚举和委托)都实现了这些重复方法的接口。