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 声明它总是错误的最有可能的原因是,对变量的简单检查表明,它们是不同的。