У меня есть класс Enum в Airport.javaНе по умолчанию Object.toString() append hashCode()?
package test;
public enum Airport {
PHX,
LAX,
SFO,
NRT,
SIN;
Airport() {
}
}
и класс Test в 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
[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 были бы одинаковыми. Поэтому, если вы ожидали хэш-код на 4, он также должен присутствовать на 1 и 2. –