Hallo,
ich versuche ein lauffähiges Beispiel für ein Server/Item-Interface basierend auf Comparable<T> zu finden. Vom Prinzip her soll ein Client einem Server Instanzen untereinander vergleichbarer Items zum Sortieren übergeben. Da es keinen Sinn macht die Item-Referenzen direkt zu vergleichen, habe ich für die Item-Objekte ein Attribut Name vom Typ String vorgesehen. Dieses Attribut soll für die Sortierung herhalten. Um die Vorgaben umzusetzen, habe ich mir folgenden Programmcode überlegt:
Beim Kompilieren bekomme ich dann eine Fehlermeldung, dass er in items.add(new Item(Stringwert)) einen Identifier erwartet. Das verstehe ich nun nicht, denn Item ist doch der Identifier oder? Ich vermute, dass der Fehler im Aufruf der compareTo-Methode in dem if-Statement der Klasse Server liegt und ich die Zuordnung der Item-Objekte an die Variablen a und b in der Klasse Server im Programm nicht berücksichtigt habe, habe aber momentan keinen Plan, wie ich das ändern kann. Hat da jemand eine Idee?
ich versuche ein lauffähiges Beispiel für ein Server/Item-Interface basierend auf Comparable<T> zu finden. Vom Prinzip her soll ein Client einem Server Instanzen untereinander vergleichbarer Items zum Sortieren übergeben. Da es keinen Sinn macht die Item-Referenzen direkt zu vergleichen, habe ich für die Item-Objekte ein Attribut Name vom Typ String vorgesehen. Dieses Attribut soll für die Sortierung herhalten. Um die Vorgaben umzusetzen, habe ich mir folgenden Programmcode überlegt:
Java:
import java.util.*;
interface Comparable<Object> {
int compareTo(Object o);
}
class Item implements Comparable {
String name;
Item(String name) {
this.name = name;
}
public int compareTo(Item item) {
return name.compareTo(item.name);
}
}
class Server {
void sort(List<? extends Comparable> items) {
Iterator<? extends Comparable> it = items.iterator();
Item a = it.next();
while(it.hasNext()) {
Item b = it.next();
if (b.compareTo(a) < 0) {
a = b;
}
}
}
}
public class Client {
Server server;
List<Comparable> items = new ArrayList<Comparable>();
items.add(new Item("Lion"));
items.add(new Item("Tiger"));
items.add(new Item("Cat"));
server.sort(items);
}
Beim Kompilieren bekomme ich dann eine Fehlermeldung, dass er in items.add(new Item(Stringwert)) einen Identifier erwartet. Das verstehe ich nun nicht, denn Item ist doch der Identifier oder? Ich vermute, dass der Fehler im Aufruf der compareTo-Methode in dem if-Statement der Klasse Server liegt und ich die Zuordnung der Item-Objekte an die Variablen a und b in der Klasse Server im Programm nicht berücksichtigt habe, habe aber momentan keinen Plan, wie ich das ändern kann. Hat da jemand eine Idee?