В настоящее время я пишу код, где я использую перечисление ниже.Enum не инициализирует правильное значение
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' (parens as missing). – fge
это будет потому, что он будет использовать java.Lang.Enum.toString(), если вам нужно изменить вывод перечисления, например, если вы хотите, чтобы все перечисления в вашем классе печатали 'S', вы должны переопределить function toString с чем-то вроде 'public String toString() {return 'S'; } 'в противном случае по умолчанию toString является' public String toString() {return super.toString(); } ' –