转载

Java枚举 – 在定义字段之前无法引用该字段

我有一个类似下面的枚举,但是 eclipse

说每对对方的第一个定义都有错误.

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的相反对象.这有可能的解决方法吗?也许在这个例子中定义了yin和good之前的阳性和坏的空占位符?

你可以尝试类似的东西:

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的递归引用.

翻译自:https://stackoverflow.com/questions/12592286/java-enum-cannot-reference-a-field-before-it-is-defined

原文  https://codeday.me/bug/20190112/518442.html
正文到此结束
Loading...