【发布时间】:2015-11-27 16:42:17
【问题描述】:
我目前正在使用下面的枚举。
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
}
我想获取枚举 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。我能知道它为什么会这样吗?还有,我该如何解决?
【问题讨论】:
-
您的代码无法编译。它将在
sal.toString失败(缺少括号)。 -
它会因为它将使用 java.Lang.Enum.toString(),如果您必须更改枚举的输出,例如,如果您希望类中的所有枚举都打印 @ 987654330@ 你必须用类似
public String toString(){ return 'S'; }的东西覆盖函数 toString 否则默认 toString 是public String toString(){ return super.toString(); } -
投票关闭为拼写错误,请参阅 OP 对 Peter Lawrey 回答的评论。