G
Guest
Gast
hallo zusammen,
ich brauch ein Interface, das wie Comparable eine Methode compareTo enthält. Dies wird benötigt um Objekte von diesem Interface einfach über Collections.sort sortieren zu können.
Um einfach nur Objekte vergleichen zu können brauch ich kein extra-interface, da meine Klasse Comparable implementieren kann:
Allerdings sollen meine Klassen auch eine weitere Methode implementieren, die z.B. ein Objekt zurückgeben können:
So gehts ja, aber ich dachte mir ich stelle ein Interface bereit, das von den Klassen implementiert wird:
So dass ich nachher schreiben kann:
Wenn ich das wie angegeben mache meldet er keine Fehler. Wenn ich aber jetzt versuche eine Liste von Objekten anzulegen und versuche diese zu sortieren, meldet er boundmismatch.
Ich kenn mich mit Generics nicht so aus, wollte aber zeigen das ich zumindest was versucht habe...
In der Liste sollen nur Objekte der gleichen Klasse sein, die jeweils MyComparable implementiert. Allerdings weiss ich vorher nicht welche konkrete Klasse verwendet wird, deswegen kann ich nicht einfach direkt MyObject sortieren, sondern verwende das Interface MyComparable.
Hoff. ist das Problem klar geworden. Danke im Voraus.
ich brauch ein Interface, das wie Comparable eine Methode compareTo enthält. Dies wird benötigt um Objekte von diesem Interface einfach über Collections.sort sortieren zu können.
Um einfach nur Objekte vergleichen zu können brauch ich kein extra-interface, da meine Klasse Comparable implementieren kann:
Code:
public class MyObject implements Comparable<MyObject> {
public int compareTo(MyObject m) {
}
}
Allerdings sollen meine Klassen auch eine weitere Methode implementieren, die z.B. ein Objekt zurückgeben können:
Code:
public class MyObject implements Comparable<MyObject> {
public int compareTo(MyObject m) {
}
MyObject newObjectAfterOperation() {
}
}
So gehts ja, aber ich dachte mir ich stelle ein Interface bereit, das von den Klassen implementiert wird:
Code:
public interface MyComparable<T extends MyComparable> extends Comparable<T> {
int compareTo(final T obj);
T newObjectAfterOperation();
}
So dass ich nachher schreiben kann:
Code:
public class MyObject implements MyComparable<MyObject> {
public int compareTo(MyObject m) {
}
MyObject newObjectAfterOperation() {
}
}
Wenn ich das wie angegeben mache meldet er keine Fehler. Wenn ich aber jetzt versuche eine Liste von Objekten anzulegen und versuche diese zu sortieren, meldet er boundmismatch.
Code:
List<MyComparable<MyObject>> test =
new ArrayList<MyComparable<MyObject>>();
...
Collections.sort(test);
Ich kenn mich mit Generics nicht so aus, wollte aber zeigen das ich zumindest was versucht habe...
In der Liste sollen nur Objekte der gleichen Klasse sein, die jeweils MyComparable implementiert. Allerdings weiss ich vorher nicht welche konkrete Klasse verwendet wird, deswegen kann ich nicht einfach direkt MyObject sortieren, sondern verwende das Interface MyComparable.
Hoff. ist das Problem klar geworden. Danke im Voraus.