2016-06-19 16 views
-4

.\StartComparator.java:3: error: StartComparator is not abstract and does not override abstract method compare(Object,Object) in ComparatorJava Generics und Komparator

.\StartComparator.java:5: error: method does not override or implement a method from a supertype @Override

import java.util.Comparator; 

public class StartComparator<T> implements Comparator 
{ 
    @Override 
    public int compare(TimeLineChunk<T> o1, TimeLineChunk<T> o2) { 
     return o1.Start.compareTo(o2.Start); 
    } 
} 

Ich bin nicht ganz sicher, warum es diese Fehler wirft, sie scheinen sich zu widersprechen.

+1

'TimeLineChunk ' ist kein Supertyp des Objekts. Es möchte ein 'Objekt'. Sie implementieren also 'Comparator' nicht wirklich (1). Stattdessen überschreibst du etwas, das nicht existent ist, entweder durch Implementieren oder Erweitern. (2). Suchen Sie nach 'Comparator >' zufällig? – Caramiriel

+1

[Was ist ein roher Typ und warum sollten wir ihn nicht verwenden?] (Http://stackoverflow.com/q/2770321) – Tom

+0

Vielen Dank für alle Antworten, sie haben mein Problem behoben. Ich bin mir nicht ganz sicher, warum die Frage bei -4 steht. Ich hatte ein Problem, das klar gesagt wurde, ich fügte die Fehlermeldung hinzu, ich stellte den relevanten Code zur Verfügung ... was hätte ich sonst noch tun können? Ich bin ein Java-Anfänger und hätte das Problem nicht selbst gefunden. – Alexander

Antwort

3

Die Beschwerden sind verwandt. Die zweite besagt, dass Ihre Methode keine Methode überschreibt. Daher ist es nicht (richtig) zu überschreiben, was die erste Beschwerde ist.

Höchstwahrscheinlich müssen Sie die Methode implements mit dem korrekten Typparameter deklarieren: implements Comparable<TimeLineChunk<T>>. Ihr Compiler sollte Sie vor der Verwendung des rohen Typs von Comparable gewarnt haben.

1

Sie überschreiben nicht die Vergleichsmethode, sondern nur eine überladene Version. Ihr Argumenttyp sollte "Objekt" sein, nicht TimeLineChunk.

+0

Nun, es wäre besser, nicht rohen "Comparable" -Typ an erster Stelle zu verwenden, indem Sie es richtig parametrisieren. – BeeOnRope