【发布时间】:2017-03-04 21:36:46
【问题描述】:
我在 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 https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html,默认 Object.toString() 是 getClass().getName() + '@' + Integer.toHexString(hashCode())
【问题讨论】:
-
一个
enum类型隐式扩展了Enum类并且是最终的。 -
请注意,第 1、2 和 4 行无论如何都是相同的。因此,如果您希望哈希码出现在 4 上,那么它也应该出现在 1 和 2 上。
标签: java enums tostring hashcode