Java 枚举未初始化正确的值

Java 枚举未初始化正确的值,java,enums,Java,Enums,我目前正在使用下面的枚举 public enum ConditionCode { EQ, SEQ, NE, SNE, CS, SCS, HS, SHS, CC, SCC, LO, SLO, MI, SMI, PL, SPL, VS, SVS, VC, SVC, HI, SHI, LS, SLS,GE, SGE, LT, SLT, GT, SGT, LE, SLE, SAL, AL } 我想获取enum ConditionCode.ALS并打印它,然后通过这样做将其与AL进行

我目前正在使用下面的枚举

public enum ConditionCode  {
    EQ, SEQ, NE, SNE, CS, SCS, HS, SHS, CC, SCC, LO, SLO, MI, SMI, PL, SPL, VS, SVS, VC, 
    SVC, HI, SHI, LS, SLS,GE, SGE, LT, SLT, GT, SGT, LE, SLE, SAL, AL
}
我想获取enum ConditionCode.ALS并打印它,然后通过这样做将其与AL进行比较

public static void main(String[] args)  {
    ConditionCode sal = ConditionCode.SAL;
    System.out.print(sal.toString + " ");
    System.out.println(sal.compareTo(ConditionCode.AL) == 0);
}
我觉得奇怪的是,这个命令打印AL而不是SAL false,例如,它对所有其他枚举都是一样的

public static void main(String[] args)  {
    ConditionCode cc = ConditionCode.CC;
    System.out.print(cc.toString + " ");
    System.out.println(cc.compareTo(ConditionCode.AL) == 0);
}
也将打印AL,而不是CC false。我能知道它为什么会这样吗?还有,我如何修复它?

此程序按预期打印

public static void main (String[] args) throws java.lang.Exception
{
    {
        ConditionCode sal = ConditionCode.SAL;
        System.out.print(sal + " ");
        System.out.println(sal.compareTo(ConditionCode.AL) == 0);
    }
    {
        ConditionCode sal = ConditionCode.CC;
        System.out.print(sal + " ");
        System.out.println(sal.compareTo(ConditionCode.AL) == 0);
    }
}

public enum ConditionCode  {
   EQ, SEQ, NE, SNE, CS, SCS, HS, SHS, CC, SCC, LO, SLO, MI, SMI, PL, SPL, VS, SVS, VC, 
    SVC, HI, SHI, LS, SLS,GE, SGE, LT, SLT, GT, SGT, LE, SLE, SAL, AL
}
印刷品

SAL false
CC false
我能知道它为什么会这样吗?还有,我怎样才能修复它


最有可能的情况是,您正在更改代码并在运行程序之前重新编译该程序,或者您正在运行与您认为的程序不同的程序。我会确保您的IDE设置正确,以便在运行程序之前重新编译程序,如果程序看起来没有问题,可能会重新启动程序。

您的代码无法编译。它将在sal.toString参数处失败,因为它将使用java.Lang.Enum.toString,如果您必须更改枚举的输出,例如,如果您希望类中的所有枚举打印S,则必须使用类似于公共字符串toString{return'S';}的内容重写函数toString否则,默认的toString是public String toString{return super.toString;}投票关闭为打字错误,请参阅OP对Peter Lawrey答案的评论。感谢您的回答,但我发现问题出在代码中,我只是没有在函数中传递正确的参数