默认的Object.toString()不是追加hashCode()吗?

Doesn't the default Object.toString() append hashCode()?

我在 Airport.java

中有一个枚举 class
package test;

public enum Airport {
    PHX,
    LAX,
    SFO,
    NRT,
    SIN;

    Airport() {
    }
}

和 Test.java

中的测试 class
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
PHX@15db9742

但输出不应该是

PHX
PHX
PHX
PHX@15db9742
PHX@15db9742

根据Object API https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html默认的Object.toString()getClass().getName() + '@' + Integer.toHexString(hashCode())

这确实是 toString() 的默认实现。但是,java.lang.Enum,所有 enum 的隐式基础 class 通过返回其名称覆盖 toString()