java - 使用方法创建枚举值

标签 java enums

我有一个枚举: 公共(public)枚举 X 实现 Y

我也有课 Ybuilder 可以创建 Y 的实例,假设使用 Ybuilder.create(int value)

如何将枚举中的枚举值设置为使用 Ybuilder 创建的 Y 的实例?理想情况下,它应该是一些简单的东西,比如

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

最佳答案

我认为您不能那样做 - 一种替代方法是委托(delegate)给构建器创建的 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; }
};

关于java - 使用方法创建枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35707021/

相关文章:

c# - 使用字符串从资源文件中读取值

java - 我需要java中的验证方法

java - android 实用地更改设备屏幕分辨率

java - 将 EnumSet 转换为整数数组

通用类型的 Java 枚举

java - 如何嵌套枚举

java - Java 中枚举类型初始化困惑

javascript - 在 Java 中使用 Mysql 和 servlet

java - 如何使用lxml更改android xml文件中的属性值,例如 "android:text"

java - await() 在游戏中是如何工作的?