IDE 显示条件始终为假
IDE shows condition always false
我有这个代码。
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显示条件总是假的。但是当我 运行 项目执行语句时(条件为真)为什么?
由于枚举值是静态的 VALUE_X 和 VALUE_Y 使用相同的 VALUE_J 实例并且反过来具有相同的 propertyX 值。
您将其设置为 1,然后立即设置为 2。
您可以通过logging/printing查看作业之前、之间和之后的信息。应该分别是0、1、2。
你的 IDE 声明它总是错误的最有可能的原因是,对变量的简单检查表明,它们是不同的。
我有这个代码。
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显示条件总是假的。但是当我 运行 项目执行语句时(条件为真)为什么?
由于枚举值是静态的 VALUE_X 和 VALUE_Y 使用相同的 VALUE_J 实例并且反过来具有相同的 propertyX 值。
您将其设置为 1,然后立即设置为 2。
您可以通过logging/printing查看作业之前、之间和之后的信息。应该分别是0、1、2。
你的 IDE 声明它总是错误的最有可能的原因是,对变量的简单检查表明,它们是不同的。