为枚举值分配枚举

Abh*_*oel 0 java enums

我想给enum分配一个枚举值

枚举1

public enum e1{
    value1, 
    value2;
}
Run Code Online (Sandbox Code Playgroud)

枚举2

public enum e2{
    val1 ( some value from e1 ), 
    val2 ( some value from e1 );
}
Run Code Online (Sandbox Code Playgroud)

我也应该能够val1根据条件改变以后的值.

这怎么可能在Java?

Joa*_*uer 7

枚举基本上是Java中的类,所以你可以创建一个属性:

public enum E2 {
  VAL1(E1.VALUE1),
  VAL2(E2.VALUE2);

  public final E1 e1Value;

  E2(E1 e1Value) {
    this.e1Value = e1Value;
  }
}
Run Code Online (Sandbox Code Playgroud)

可能也使的getter/setter方法e1Value,但我强烈劝阻这一点.虽然技术上没有任何东西可以阻止你在枚举中创建一个可修改的字段,但这是非常不寻常和意外的,并且导致令人困惑和/或微妙的错误.

  • @AbhishekGoel:你有没看过最后一段?那个*不是代码*?你可以通过编写一个setter(并使`e1Va​​lue`为非final)来完成它,就像你对任何其他类一样.**但是**,这是一个非常糟糕的主意.如果你需要在两个枚举之间进行*mutable*绑定,那么你可能更适合在某个地图中跟踪它. (2认同)