我在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上。 –