枚举的Java设计问题

时间:2014-09-19 17:53:33

标签: java enums

我有一个具有不同变量的类,用户定义的枚举也是其中之一。 该类基本上代表表中的数据。

例如)

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)。

3 个答案:

答案 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个枚举和委托)都实现了这些重复方法的接口。