Warum TreeSet werfen eine classcastexception-Fehler?

Ich versuche, fügen Sie zwei "Mitarbeiter" der Objekte zu einem TreeSet:

Set<Employee> s = new TreeSet<Employee>();
s.add(new Employee(1001));
s.add(new Employee(1002));

Aber es wirft eine classcastexception-Fehler:

Exception in thread "main" java.lang.ClassCastException: Employee cannot be cast to java.lang.Comparable
    at java.util.TreeMap.put(TreeMap.java:542)
    at java.util.TreeSet.add(TreeSet.java:238)
    at MyClient.main(MyClient.java:9)

Aber wenn ich nur ein Objekt der TreeSet:

Set<Employee> s = new TreeSet<Employee>();
s.add(new Employee(1001));

Oder wenn ich mit einem HashSet statt:

Set<Employee> s = new HashSet<Employee>();
s.add(new Employee(1001));
s.add(new Employee(1002));

Dann ist es erfolgreich. Warum gilt die Ausnahme passieren und wie behebe ich es?

  • Sie müssen darauf Vertrauen, dass die Fehlermeldung korrekt ist. Employee cannot be cast to java.lang.Comparable ist das problem. Wenn Sie ein element, es gibt nichts zu vergleichen, so dass es nicht das problem erkennen. HashSet nicht Vergleichbar sind, so es nicht überprüft, es entweder.
InformationsquelleAutor Rais Alam | 2013-04-11
Schreibe einen Kommentar