Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 默认的Object.toString()是否附加hashCode()?_Java_Enums_Tostring_Hashcode - Fatal编程技术网

Java 默认的Object.toString()是否附加hashCode()?

Java 默认的Object.toString()是否附加hashCode()?,java,enums,tostring,hashcode,Java,Enums,Tostring,Hashcode,我在Airport.java中有一个Enum类 package test; public enum Airport { PHX, LAX, SFO, NRT, SIN; Airport() { } } 以及Test.java中的一个测试类 package test; public class Test { public static void main(String[] args) { Airport a

我在Airport.java中有一个Enum类

package test;

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

    Airport() {
    }
}
以及Test.java中的一个测试类

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,默认的Object.toString是getClass.getName+'@'+Integer。toHexStringhashCode

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

枚举类型隐式扩展枚举类,并且是最终的。请注意,第1、2和4行仍然相同。因此,如果您希望hashcode出现在4上,那么它也应该出现在1和2上。还有,别忘了:。@MordechayS,那篇帖子实际上是我在兔子洞里寻找这个的原始帖子。