使用方法创建枚举值

时间:2016-02-29 18:37:44

标签: java enums

我有一个枚举: public enum X implements Y

我也有一节课 可以创建Ybuilder个实例的Y,让我们说Ybuilder.create(int value)

如何将枚举中的枚举值设置为Y创建的Ybuilder个实例?理想情况下,它会像

一样简单
public enum X implements Y {
  A (Ybuilder.create(0)),
  B (Ybuilder.create(1)),
};

1 个答案:

答案 0 :(得分:6)

我认为你不能这样做 - 一种替代方法是委托给构建器创建的Y实例。例如:

interface Y { //Assume Y has two methods
   void m1();
   void m2();
}

public enum X implements Y {
  A (0),
  B (1);
  private final Y y;
  X(int value) { this.y = YBuilder.create(value); }

  //Then delegate to y to implement the Y interface

  public void m1() { y.m1(); return; }
  public void m2() { y.m2(); return; }
};

请注意,我使用int参数创建了枚举,但如果您愿意,可以直接传递Y

public enum X implements Y {
  A (Ybuilder.create(0)),
  B (Ybuilder.create(1));
  private final Y y;
  X(Y y) { this.y = y; }
};