Das Vergleichen von 2 unterschiedlichen Objekten

BlackJoe

Mitglied
Halli Hallo, ich sitze gerade an einer Aufgabe bei der ich nicht genau weiß wie ich danach googeln soll.
Und zwar geht es um folgendes.
Ich habe 2 Klassen und zwar "Angestellter" und "Student" und beide implementieren das Interface "Mitarbeiter" welches sich wiederum vom Java Interface Comparable ableitet.

Nun soll ich eine Funktion OrderList(List<Mitarbeiter> m) schreiben, die eine Liste von Mitarbeitern alphabetisch sortiert.
Jetzt habe ich die alphabetische Sortierung bereits hinbekommen, indem ich die compareTo() Methode die ja vom Comparable Interface vorgegeben waren überschrieben habe.

Allerdings gibt es ein Problem. Und zwar übernehmen die compareTo()-Methoden als Parameter nur Objekte des gleichen Datentyps also nur Angestellter, oder Student. Wenn ich diese 2 verschiedenen Objekte in eine Liste packe, dann bekomme ich die Fehlermeldung: "Angestellter cannot be cast to Student".

Ich würde den Code jz erstmal nicht reinposten, weil die Aufgabenstellung eigentlich komplexer ist und die Klassen noch mit anderen Klassen kommunizieren usw.
Ich denke es geht hierbei eher um ein Sammeln von Ideen was man da machen könnte, als um Bug-Suche.

Deshalb wollte ich nachfragen, was ihr denkt was ich da machen könnte, um 2 Objekte unterschiedlicher Klassen aber selben Interfaces miteinander vergleichen zu können.

// EDIT:
Tut mir Leid. Ich habe echt ebend Stunden mit dem Code verbracht. Beim Aufschreiben meiner Problemstellung ist mir irgendwie ein Licht aufgegangen.
Ich hab das Problem gelöst.
Und zwar habe ich einfach die Datentypen aus den Objekten die ich brauche extrahiert (die Strings) und die dann auf alphabetische Reihenfolge geprüft.
Jetzt funktioniert auch alles. Topic kann geclosed werden.
 
Zuletzt bearbeitet:

Jardcore

Top Contributor
Das Interface Compareable gibt meines wissen vor das du compareTo(Object object) implementierst oder?
In der Methode musst du dann ein TypeCast machen und das Object in den speziellen Typen casten, also Student oder Angestellter
Java:
public int compareTo(Object object) {
    if(object instanceof Student) {
        Student student = (Student) object;
        //...
    }
}
 

Neue Themen


Oben