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

-1 java enums tostring hashcode

我在Airport.java有一个Enum类

package test;

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

    Airport() {
    }
}
Run Code Online (Sandbox Code Playgroud)

和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()));
    }

}
Run Code Online (Sandbox Code Playgroud)

这个输出是

PHX
PHX
PHX
PHX
PHX@15db9742
Run Code Online (Sandbox Code Playgroud)

但输出不应该

PHX
PHX
PHX
PHX@15db9742
PHX@15db9742
Run Code Online (Sandbox Code Playgroud)

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

Mur*_*nik 5

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