我有这个代码。
enum EnumA {
VALUE_X(EnumA.EnumB.VALUE_J),
VALUE_Y(EnumA.EnumB.VALUE_J);
EnumB propertyC;
enum EnumB {
VALUE_J;
int propertyX;
}
EnumA(EnumB c) {
this.propertyC = c;
}
}
public class {
main(...) {
EnumA.VALUE_X.propertyC.propertyX = 1;
EnumA.VALUE_Y.propertyC.propertyX = 2;
if(EnumA.VALUE_X.propertyC.propertyX == EnumA.VALUE_Y.propertyC.propertyX) {
(Any statement)
}
}
}
所以问题是我的IDE显示该条件始终为false。但是当我运行项目时,该语句得到执行(条件为true)为什么?
答案 0 :(得分:0)
由于枚举值是静态的,因此VALUE_X和VALUE_Y使用的是VALUE_J的相同实例,而对于propertyX则具有相同的值。
您将其设置为1,然后设置为2。
您可以通过登录/打印分配之前,之间和之后的信息来进行检查。分别为0、1和2。
IDE声明其始终为假的原因很可能是,对变量的简单检查显示它们是不同的。