Java 为enum分配一个枚举值
我想为枚举分配一个枚举值,如 枚举1Java 为enum分配一个枚举值,java,enums,Java,Enums,我想为枚举分配一个枚举值,如 枚举1 public enum e1{ value1, value2; } 枚举2 public enum e2{ val1 ( some value from e1 ), val2 ( some value from e1 ); } 我还应该能够在以后根据条件更改val1的值 在Java中这是怎么可能的?您可以这样做: public enum E1 { A, B; } 然后: public enum E2 {
public enum e1{
value1,
value2;
}
枚举2
public enum e2{
val1 ( some value from e1 ),
val2 ( some value from e1 );
}
我还应该能够在以后根据条件更改val1
的值
在Java中这是怎么可能的?您可以这样做:
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;
}
}
枚举基本上是Java中的类,因此您可以创建一个属性:
public enum E2 {
VAL1(E1.VALUE1),
VAL2(E2.VALUE2);
public final E1 e1Value;
E2(E1 e1Value) {
this.e1Value = e1Value;
}
}
您还可以为
e1Value
创建一个getter/setter,但我强烈反对这样做。虽然从技术上讲,没有什么能阻止您在枚举中创建可修改的字段,但这是非常不寻常和意外的,会导致混乱和/或微妙的错误。可变枚举,哎哟。从技术上讲是可能的,但我建议不要这样做。如果它在初始化时只有一个时间值,那么它是完美的
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");
如果提供构造函数,则可以在枚举中包含成员变量:
public enum e2{
A2(e1.B1),
B2(e1.B1),
C2(e1.A1);
e1 e1Value;
e2(e1 e1NewValue){
e1Value = e1NewValue;
}
}
public enum e1{
A1, B1;
}
不能更改枚举。这就是为什么它们是enum…这个问题目前非常模糊-尤其是“我还应该能够更改val1的值”-你是什么意思?我也可以将val1的值从E1.VALUE1更改为E2.VALUE2吗?如果是,那怎么办?@AbhishekGoel:你读过最后一段吗?不是代码的那个?您可以通过编写setter(并使
e1Value
成为非final)来实现这一点,就像您对任何其他类所做的那样。但是,这真是个坏主意。如果您需要两个枚举之间的可变绑定,那么最好在映射的某个位置跟踪该绑定。