当前位置: 首页 > 面试题库 >

Java枚举-在定义字段之前无法引用它

寇夜洛
2023-03-14
问题内容

我有一个像下面这样的枚举,但是蚀说每个相对的对的第一个定义中都有错误。

public enum Baz{
  yin(yang),    //Cannot reference a field before it is defined
  yang(yin),
  good(evil),   //Cannot reference a field before it is defined
  evil(good);

  public final Baz opposite;

  Baz(Baz opposite){
    this.opposite = opposite;
  }
}

我想要完成的是能够Baz.something.opposite用来获取的 相反
对象Baz.something。有没有可能的解决方法?也许对于一个空的占位符yangbad之前yingood在此示例中定义的?


问题答案:

您可以尝试类似:

public enum Baz{
  yin("yang"),    
  yang("yin"),
  good("evil"),   
  evil("good");

  private String opposite;

  Baz(String opposite){
    this.opposite = opposite;
  }

  public Baz getOpposite(){
     return Baz.valueOf(opposite);
  }
}

然后引用为

Baz.something.getOpposite()

通过以字符串表示形式查找枚举值,应该可以完成您想要的工作。我认为您无法将其与对Baz的递归引用一起使用。



 类似资料:
  • 简短问题:如何解决Forge Mod代码中的两个错误? 所需的长问题/信息: 我正在创建一个锻造模型,它扩展了钻石的功能,但我在制作“积木项目”时遇到了一个问题,这是库存中积木的表示。我使用的Forge MDK是。 在下面代码的第32行,我得到两个错误。 第一个是用于,错误是

  • 问题内容: 我以为我很了解Java泛型,但是随后在java.lang.Enum中遇到了以下内容: 有人可以解释如何解释此类型参数吗?奖励点,用于提供可以使用类似类型参数的其他示例。 问题答案: 这意味着枚举的类型参数必须从本身具有相同类型参数的枚举派生。怎么会这样 通过使类型参数成为新类型本身。因此,如果我有一个名为StatusCode的枚举,则它等效于: 现在,如果你检查的限制,我们已经得到了-

  • 问题内容: 我正在用Java编写游戏,该游戏由一排瓷砖组成。我将无法以独创性方式定义图块的边缘以及它们之间的相互关系,例如,要获得图块的相对边缘,我希望能够输入。但是,当使用枚举定义这些边时,我最终不得不在构造函数中转发至少其中两个引用: 有没有什么办法可以使用枚举来解决这个问题呢? 问题答案: 您可以这样做不是那么直观。

  • 我试图在Avro模式中创建Union字段,并用它发送相应的JSON消息,但要有一个字段-。 https://avro.apache.org/docs/1.8.2/spec.html#工会 具有相应JSON数据的最简单联合类型(avro模式)的示例是什么?(尝试制作不含NULL/空数据的示例和含NULL/空数据的示例)。

  • 问题内容: 我想要一个Java枚举,其值是整数。 例如: 但是我也想要这两个常量的自定义名称, 例如“ Task Created”和“ Task Deleted”(那里有空格)。 我想尽可能优雅地做到这一点,而无需编写 太多额外的代码。 我可以在没有其他 将枚举常量映射到其自定义名称的映射的情况下实现此目标吗? 我在该项目中使用JDK 6。 问题答案: 只需为此添加一个字段: 如果您不想指定字符串