MyClass kann nicht in java.lang.Comparable umgewandelt werden: java.lang.ClassCastException

8

Ich mache ein Java-Projekt und ich habe dieses Problem und weiß nicht, wie ich es beheben kann.

Die Klassen in meinem Projekt (vereinfacht):

%Vor%

Dann versuche ich ein ArrayList des Stocks zu sortieren, also erstelle ich eine andere Klasse namens CompareByValue

%Vor%

}

Wenn ich versuche, das Programm auszuführen, gibt es den Fehler:

  

Ausnahme im Thread "main" java.lang.ClassCastException: Stock kann nicht in java.lang.Comparable

umgewandelt werden

Wer weiß, was los ist?

    
user2234225 31.10.2013, 21:18
quelle

2 Antworten

12

Dies liegt daran, dass Stock nicht Comparable implementiert. Entweder implementieren Sie es:

%Vor%

... Oder übergeben Sie eine Instanz von CompareByValue als Parameter an die sort() Methode:

%Vor%     
Óscar López 31.10.2013 21:20
quelle
0

nur von oben Code, es sieht gut aus. Bist du sicher die Ausnahme vom obigen Code? Wenn Sie das Stock-Objekt in eine sortierte Sammlung einfügen, sehen Sie eine solche Ausnahme und müssen eine vergleichbare Schnittstelle implementieren.

Aber für den Fall, dass Sie einfach Ihren benutzerdefinierten Vergleicher übergeben, müssen Sie die Aktie nicht zu einem Vergleichswert machen. Es ist der gleiche Fall, wie Sie anonyme Comparator-Implementierung geben.

Setzen Sie Ihren Vergleicher auf sortierte Sammlung wie TreeSet und fügen Sie dann das Stock-Objekt in sortierte Sammlung, sollte es funktionieren, ohne vergleichbare Schnittstelle implementieren.

    
Steve Park 31.10.2013 21:34
quelle