Ich bin eine einfache LinkedList-Klasse implementieren und ich möchte Generics verwenden. Die Klassendeklaration ist:Java Generic formale Parameter
Dies ist ein Lehrbeispiel, so dass die abstrakten Eltern und die Schnittstelle auch meine eigenen sind. Das Problem entsteht, als ich erkannte, dass ich eine Klasse (E), die ebenfalls vergleichbar ist, hinzufügen und pflegen muss. Ich dachte, ich könnte das auf die Methoden beschränken, wo es tatsächlich einen Unterschied macht. Aber basierend auf den folgenden Kommentaren mag das mein grundlegendes Missverständnis sein.
Hier ist der Code:
public void addSorted(<E extends Comparable<E>> value) {
if (front == null || value.compareTo(front.word) <= 0) {
// insert at front of list
front = new ListNode<E>(value, front);
} else {
// insert in middle of list
ListNode<E> current = front;
while (current.next != null && current.next.word.compareTo(value) < 0) {
current = current.next;
}
current.next = new ListNode<E>(value, current.next);
}
}
Es schien mir, dass, wenn ich nie dann anrufen addSorted wollen, warum sollte die bestimmte Klasse E ist beschränkt sein, die vergleichbare implementieren? Oder gibt es eine völlig andere Art, es zu tun, mit einem generischen Analog zu Instanzen?
Danke!
Das ist nicht das ist korrekte SyntaxEs sollte entweder 'public' sein,> void addSorted (E-Wert) 'oder einfach' public void addSorted (E-Wert) ', wenn' E' ein Typparameter der Klasse ist. Wir brauchen mehr Informationen. –
Wir können auch nicht, wenn Sie das Problem nicht beschreiben. – Savior
Sie sollten Ihre Frage verbessern. Gibt es einen Kompilierungsfehler? Gibt es welche, welche? Gibt es stattdessen einen Laufzeitfehler? – Baltasarq