Generics Java Klassen

blub-

Grünschnabel
Hallo.

Ich hätte wieder einmal eine Frage. Ich habe bis jetzt Generics noch nie in Kombination bei der Erzeugung einer Klasse verwendet.

Also ich habe eine Klasse Node. Instanzen dieser Klasse sollen in einer LinkedList eingefügt werden. Da ich vor dem Einfügen der Elemente bestimmte Sachen prüfe, dachte ich mir, ich erzeuge mir eine eigene Klasse und leite diese von LinkedList ab.
Code:
public class NodeLinkedList<UpperNode> extends LinkedList{
 public NodeLinkedList(){
        super();
    }

 public void checkIfExits(Node n){
   ListIterator<Node> it = this.listIterator();
   Node temp = null; 
   while(it.hasNext()){
            temp =itApp.next();
 }

Mein Problem ist jetzt folgendes, dass temp ein Object ist und kein Node und ich somit nicht auf die Funktionen bzw. Variablen der Klasse zugreifen kann.

Auch ein cast mittels
Code:
(Node)
führt nicht zu dem gewünschten Erfolg.

Ich vermute mal, ich hab irgendwas falsch verstanden bzw. nicht kapiert.

Danke schon mal im Voraus und noch einen schönen Abend

blub-
 
Dein Problem ist folgendes, in dieser Zeile:

Java:
NodeLinkedList<UpperNode>
sagst du dem Compiler nicht dass du nur UpperNodes in der Liste haben willst, sondern, dass welche Klasse auch immer in dem Container gespeichert wird, sie über UpperNode erreichbar ist.
Damit du an die Methoden von Node kommst müsstest du es so machen:

Java:
Node LinkedList<T extends Node>

Wenn du dann eine Referenz auf ein Objekt des Typs T hast kannst du von dem auch alle Methoden von Node aufrufen. Hier noch ein kleines Beispiel:

Java:
public class NodeLinkedList<T extends Node> extends java.util.LinkedList
{
    public NodeLinkedList()
    {
        super();
    }

    public void add(T o) {
        if(!o.check()) {
            System.err.println("Node is not correct");
        }
        else {
            super.add(o);
        }
    }
}

Bevor ich es vergesse, wenn du in die eckigen Klammern Java anstelle von Code schreibst, werden Schlüsselwörter in Java auch hervorgehoben wie bei mir zu sehen. Das macht deinen Code dann auch für andere viel leichter lesbar und ist hier im Forum viel lieber gesehen.
 
Zuletzt bearbeitet von einem Moderator:
Hallo Technoblade,

danke für deine Antwort. Funktioniert jetzt ohne Probleme. :D


mfg blub-

PS: Das mit dem Java-Block habe ich nicht gewusst. Werde ich in Zukunft machen. Ich habe mich schon gewundert, dass meine Schlüsselwörter nicht hervorgehoben wurden.
 
Zurück