我想为枚举分配一个枚举值,例如
枚举 1
public enum e1{
value1,
value2;
}
枚举 2
public enum e2{
val1 ( some value from e1 ),
val2 ( some value from e1 );
}
我还应该能够val1
根据条件更改稍后的值。
这在 Java 中怎么可能?
枚举基本上是 Java 中的类,所以你可以创建一个属性:
public enum E2 {
VAL1(E1.VALUE1),
VAL2(E2.VALUE2);
public final E1 e1Value;
E2(E1 e1Value) {
this.e1Value = e1Value;
}
}
您也可以为 制作一个 getter/setter e1Value
,但我强烈反对这样做。虽然在技术上没有什么能阻止您在枚举中创建可修改的字段,但这是非常不寻常和出乎意料的,并且会导致令人困惑和/或微妙的错误。
你可以这样做:
public enum E1 {
A, B;
}
接着:
public enum E2 {
C(E1.A), D(E1.B);
private final E1 e1;
private E2(E1 e1) {
this.e1 = e1;
}
public E1 getE1() {
return e1;
}
}
如果您提供构造函数,则可以在 Enum 中有一个成员变量:
public enum e2{
A2(e1.B1),
B2(e1.B1),
C2(e1.A1);
e1 e1Value;
e2(e1 e1NewValue){
e1Value = e1NewValue;
}
}
public enum e1{
A1, B1;
}
可变枚举,哎哟。技术上可行,但我建议不要这样做。如果它在初始化时只是一个时间值,那么它非常好。
public enum e1{
value1("1"),
value2("2");
String val;
private e1(String v) {
val = v;
}
//bad don't use
public void setValue(String v){
val = v;
}
public String getValue(){
return val;
}
}
//usage
e1.value1.setValue("3");
e1.value1.setValue("4");