我在Airport.java不是默认的Object.toString()追加hashCode()吗?
package test;
public enum Airport {
PHX,
LAX,
SFO,
NRT,
SIN;
Airport() {
}
}
枚举类和Test.java
Test类package test;
public class Test {
public static void main(String[] args) {
Airport a = Airport.PHX;
System.out.println(a);
System.out.println(String.valueOf(a));
System.out.println(a.name());
System.out.println(a.toString());
System.out.println(a.name() + '@' + Integer.toHexString(a.hashCode()));
}
}
这个输出是
PHX
PHX
PHX
PHX
[email protected]
,但应该不是输出为
PHX
PHX
PHX
[email protected]
[email protected]
根据对象API https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html默认Object.toString()
是getClass().getName() + '@' + Integer.toHexString(hashCode())
一个'enum'类型隐式扩展了'Enum'类,并且是最终的。 –
请注意,第1,2,4行无论如何都是相同的。所以如果你期望hashcode在4上,它应该出现在1和2上。 –