ich in Airport.javaWird nicht standardmäßig Object.toString() an hashCode() angehängt?
eine Enum-Klasse habenpackage test;
public enum Airport {
PHX,
LAX,
SFO,
NRT,
SIN;
Airport() {
}
}
und eine Test-Klasse in 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()));
}
}
Der Ausgang dieses für ist
PHX
PHX
PHX
PHX
[email protected]
sollte aber nicht die Ausgabe ist
PHX
PHX
PHX
[email protected]
[email protected]
Nach dem dem Objekt API https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html Standard Object.toString()
ist getClass().getName() + '@' + Integer.toHexString(hashCode())
Ein 'enum' Typ erweitert implizit die' Enum' Klasse und ist endgültig. –
Beachten Sie, dass die Zeilen 1, 2 und 4 trotzdem identisch wären. Wenn Sie also den Hashcode auf 4 erwarten, sollte er auch auf 1 und 2 vorhanden sein. –