Hallo,
ich habe eine Reihe von Klassen, die ein Interface mit dem Namen Action implementieren und in einer Liste gehalten werden sollen. Da die Liste sortiert werden muss, implementieren diese Klassen auch das Comparable-Interface.
(Zur Vereinfachung ist die Schnittstelle Action hier leer/nicht aufgeführt)
Es existieen eine Reihe weiterer Klassen, die die gleichen Interfaces implementieren.
Wenn ich eine Menge (hier 1 Object) in die Liste schreibe und dann sortieren möchte kommt in der Collections.sort(); Zeile der Fehler:
Warning1
Warning2
wo liegt der Fehler/was muss ich ändern?
Komisches Verhalten: wenn ich die Zeile
zu
ändere kommt ein Fehler:
Wenn ich sie aber zu
ändere keiner, stattdessen die Warnung
Soweit ich weiß, ließe sich das Problem lösen, indem ich das Interface Action und Comparable zusammenfasse
Mich interessiert eher, warum es anders nicht geht
Vielen Dank schon einmal
RoHo
ich habe eine Reihe von Klassen, die ein Interface mit dem Namen Action implementieren und in einer Liste gehalten werden sollen. Da die Liste sortiert werden muss, implementieren diese Klassen auch das Comparable-Interface.
(Zur Vereinfachung ist die Schnittstelle Action hier leer/nicht aufgeführt)
Java:
public class Element implements Action, Comparable<Action> {
@Override
public int compareTo(Action o) {
return 0;
}
}
Es existieen eine Reihe weiterer Klassen, die die gleichen Interfaces implementieren.
Java:
public class Op<T extends Action, Comparable> { //<---------Warning1
private void method() {
List<T> liste = new ArrayList<T>();
T a1 = (T) new Element(); //<---------------Warning2
liste.add(a1);
Collections.sort(liste); //<----------- Error
}
}
Wenn ich eine Menge (hier 1 Object) in die Liste schreibe und dann sortieren möchte kommt in der Collections.sort(); Zeile der Fehler:
Code:
Bound mismatch: The generic method sort(List<T>) of type Collections is not applicable for the arguments (List<T>).
The inferred type T is not a valid substitute for the bounded parameter <T extends Comparable<? super T>>
Code:
The type parameter Comparable is hiding the type Comparable<T>
Code:
Element is a raw type. References to generic type Element<T> should be parameterized
wo liegt der Fehler/was muss ich ändern?
Komisches Verhalten: wenn ich die Zeile
Code:
Java:
public class Op<T extends Action, Comparable<Action>> {
Code:
Multiple markers at this line
- Syntax error on token ",", . expected
- The type parameter Comparable is hiding the type
Comparable<T>
Java:
public class Op<T extends Comparable<Action>, Action > {
Code:
The type parameter Action is hiding the type Action
Soweit ich weiß, ließe sich das Problem lösen, indem ich das Interface Action und Comparable zusammenfasse
Code:
interface Action implements Comparable<Action>
...
Vielen Dank schon einmal
RoHo