Generische Objekt Instanz erstellen

Kirby.exe

Top Contributor
Könnte mir jemand erklären wie ich eine Instanz zu einem generischen Objekt erstelle? Beispielsweise für die folgende Klasse:

Java:
public class Node <T> {

    private T data;
    private Node <T> next;
    
    public Node(T dataValue){
        this.data = dataValue;
        this.next = null;
    }
    
    public void setNext(Node <T> next) {
        this.next = next;
    }
    
    public Node <T> getNext(){
        return next;
    }
    
    public T getData() {
        return data;
    }
    
    @Override
    public String toString() {
        return "[" + data + "] ";
    }
}
 
K

kneitzel

Gast
Die Klasse ist generisch, die Instanz dann nicht mehr. Also wenn Du eine Instanz brauchst, dann musst Du Dich festlegen.

Also Dein Node<T> ist so wie ArrayList<T> und co, also kannst Du ebenso nutzen:
Java:
// Generische ArrayList Klasse nutzen für z.B. String:
ArrayList<String> myList = new ArrayList<String>();

// Nun geht das mit Deinem Node ebenso:
Node<String> myNode = new Node<String>();

Wobei es ausreicht, wenn Du den Typ einmal festlegst, also z.B. bei Deinem Node:
Java:
Node<String> myNode = new Node<>();
 

Kirby.exe

Top Contributor
Die Klasse ist generisch, die Instanz dann nicht mehr. Also wenn Du eine Instanz brauchst, dann musst Du Dich festlegen.

Also Dein Node<T> ist so wie ArrayList<T> und co, also kannst Du ebenso nutzen:
Java:
// Generische ArrayList Klasse nutzen für z.B. String:
ArrayList<String> myList = new ArrayList<String>();

// Nun geht das mit Deinem Node ebenso:
Node<String> myNode = new Node<String>();

Wobei es ausreicht, wenn Du den Typ einmal festlegst, also z.B. bei Deinem Node:
Java:
Node<String> myNode = new Node<>();
Also wenn ich jetzt eine Methode in meiner „List“ Datenstruktur erstellen so wie folgt:


Java:
public void add(Node <T> before){
Node <T> newNode = new Node <T>();
}
Wäre das richtig?
 

CSHW89

Bekanntes Mitglied
Ergänzend dazu, da der Konstruktor ein Objekt der Klasse T verlangt, muss dieser übergeben werden. Der Typ steht aber an dieser Stelle fest:
Java:
Node<MeineKlasse> node1 = new Node<>(new MeineKlasse());
Node<String> node2 = new Node<>("Test");
Das Instantiieren von "data" in der Node-Klasse geht nicht. Also sowas wie
Java:
data = new T()
ist nicht erlaubt.
 

Kirby.exe

Top Contributor
Ergänzend dazu, da der Konstruktor ein Objekt der Klasse T verlangt, muss dieser übergeben werden. Der Typ steht aber an dieser Stelle fest:
Java:
Node<MeineKlasse> node1 = new Node<>(new MeineKlasse());
Node<String> node2 = new Node<>("Test");
Das Instantiieren von "data" in der Node-Klasse geht nicht. Also sowas wie
Java:
data = new T()
ist nicht erlaubt.
So habe es zum laufen bekommen, Dankeschön :)
 

Kirby.exe

Top Contributor
Aaaaaaaaaaaalso...Ich habe jetzt eine Klasse Liste geschrieben(Die Datenstruktur) und eine Klasse Node(Die einzelnen Knoten in der Datenstruktur). Ich hatte versucht Dinge einzulesen und in die Liste zu speichern, wenn man keine Eingaben mehr tätigen möchte, wird die Liste ausgegeben. Mein Problem hierbei ist, dass die Ausgabe in einer endlos Schleife endet xD Ich verstehe nicht ganz was falsch an der Abbruchbedingung ist :)

Hier sind meine 3 Dateien:

Java:
public class Node <T> {

    private T data;
    private Node <T> next;
    private Node <T> previous;
  
    public Node(T dataValue){
        this.data = dataValue;
        this.next = null;
        this.previous = null;
    }
  
    public void setNext(Node <T> next) {
        this.next = next;
    }
  
    public Node <T> getNext(){
        return next;
    }
  
    public void setPrevious(Node <T> previous) {
        this.previous = previous;
    }
  
    public Node<T> getPrevious(){
        return previous;
    }
  
    public T getData() {
        return data;
    }
  
    @Override
    public String toString() {
        return "[" + data + "] ";
    }
}
Java:
public class List <T> {

    private Node <T> front;
    private Node <T> rear;
  
    public List() {
        front = null;
        rear = null;
    }
  
    public void add(Node <T> before, T data) throws InstantiationException, IllegalAccessException{
        if(before == null) {
            System.out.println("Du kannst nach einem null nichts einfügen!");
            return;
        }
        Node <T> newNode = new Node<T>(data);
        newNode.setNext(before.getNext()); //Setze den next der neuen Node auf den Nachfolger
        before.getNext().setPrevious(newNode); //Setze das previous der neuen Node auf die neue Node
        before.setNext(newNode);  //Setze die neue Node als Nachfolger der vorherigen Node
        newNode.setPrevious(before); //Setze den Vorgänger der neuen Node
      
    }
  
    public void addFront(T data) throws InstantiationException, IllegalAccessException{
        Node <T> newNode = new Node<T>(data);
        newNode.setNext(front);
        newNode.setPrevious(null);
        front = newNode;
      
    }
  
    public void addRear(T data) throws InstantiationException, IllegalAccessException{
        Node <T> newNode = new Node<T>(data);
        newNode.setPrevious(rear);
        newNode.setNext(null);
        rear = newNode;
  
    }
  
    public void printList() {
        for(Node<T> it = front; it != null; it.getNext()) {
            System.out.println(it.toString());
        }
    }
  
    public boolean isEmpty() {
        return front == null && rear == null;
    }
  
    public void setFront(Node <T> front){
        this.front = front;
    }
  
    public Node<T> getFront(){
        return this.front;
    }
  
    public void setRear(Node <T> rear){
        this.rear = rear;
    }
  
    public Node<T> getRear(){
        return this.rear;
    }
}
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class ListTester {
    private static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    public static void main(String[] args) throws IOException{
        List <String> s = new List<String>();
        boolean check = true;
        while(check) {
            int temp = readIntegers();
            switch(temp) {
            case 1:
                System.out.println("Geben sie den Input ein: ");
                String l = in.readLine();
                try {
                    s.addFront(l);
                } catch (InstantiationException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
                break;
            }
          
            System.out.println("Wollen sie eine weitere eingabe tätigen?");
            if(in.readLine().equals("nein")) {
                check = false;
                System.out.println("Liste wird ausgegeben...");
                try {
                    Thread.sleep(1500);
                } catch (InterruptedException e) {
                    System.out.println("Thread Sleep failed!");
                    e.printStackTrace();
                }
                s.printList();
            }
          
        }
      

    }
  
    private static Integer readIntegers() {
        try {
            int result = Integer.parseInt(in.readLine());
            return result;
        }catch(Exception e) {
            System.out.println("Das ist keine Zahl");
        }
        return null;
    }

}
 

VfL_Freak

Top Contributor
Moin,

mal ins Blaue geraten: meinst du dies hier?
Java:
System.out.println("Wollen sie eine weitere eingabe tätigen?"); 
if(in.readLine().equals("nein")) 
{ // ...

* kommt denn der erste SysOut??
* dumm gefragt: gibst Du dann wirklich 'nein' ein (klein geschrieben etc.)??

VG Klaus
 

Kirby.exe

Top Contributor
Moin,

mal ins Blaue geraten: meinst du dies hier?
Java:
System.out.println("Wollen sie eine weitere eingabe tätigen?");
if(in.readLine().equals("nein"))
{ // ...

* kommt denn der erste SysOut??
* dumm gefragt: gibst Du dann wirklich 'nein' ein (klein geschrieben etc.)??

VG Klaus
Daran liegt es nicht ;) Er geht bis zum Thread Sleep und Printet auch die Liste, nur halt unendlich lange...was nicht ganz meine Intention war xd

Zu deiner Frage:

Ja, ich gebe "nein" (<--- genau so) ein und es wir auch der Sysout geprintet.


Meine sehr sehr wage Vermutung....Ich fange beim Print irgendeine Exception nicht ab xD
 
K

kneitzel

Gast
Ist doch klar:
Java:
for(Node<T> it = front; it != null; it.getNext())

Was macht denn nur das it.getNext()?

Da it nicht verändert wird, ist dies eine Endlosschleife, so it am Anfang nicht auf null gesetzt wird.
 

Kirby.exe

Top Contributor
Ist doch klar:
Java:
for(Node<T> it = front; it != null; it.getNext())

Was macht denn nur das it.getNext()?

Da it nicht verändert wird, ist dies eine Endlosschleife, so it am Anfang nicht auf null gesetzt wird.
Ohh ok... Ich hatte mir halt folgendes dabei gedacht:

Ich möchte das bei jeder Iteration das it die Referenz des nächsten Objekts enthält und das letzte Objekt der Liste zeigt auf null, dort soll die Schleife dann abbrechen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Generische Funktion Java Basics - Anfänger-Themen 3
B Generische Typen für dynamisches Formular Java Basics - Anfänger-Themen 3
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
H Generische Konstruktor Java Basics - Anfänger-Themen 12
D Generische Klasse Java Basics - Anfänger-Themen 6
H linkedlist generische klassen Java Basics - Anfänger-Themen 169
M Datentypen Generische Datentypen - Syntax Java Basics - Anfänger-Themen 25
O Generische Typen Java Basics - Anfänger-Themen 9
M Generische Klassen "FlaschenRegal" Java Basics - Anfänger-Themen 13
Queiser Datentypen 2 generische Datentypen für eine Schnittstelle Java Basics - Anfänger-Themen 1
M Generische Liste aus Comparable-Objekten Java Basics - Anfänger-Themen 6
J Sortierte generische Liste Java Basics - Anfänger-Themen 1
D statische generische Methoden Java Basics - Anfänger-Themen 3
S Wie muss ich die Generische Methode schreiben? Java Basics - Anfänger-Themen 6
M Methoden Generische Klasse - ändern einzelner Attributwerte Java Basics - Anfänger-Themen 2
S generische methode mit verschiedenen datentypen Java Basics - Anfänger-Themen 3
N Generische Schnittstellen Java Basics - Anfänger-Themen 2
B generische LinkedList nach Häufigkeit der Elemente füllen Java Basics - Anfänger-Themen 6
D Generische Typen Java Basics - Anfänger-Themen 20
S Erste Schritte Generische Klassen sind toll ....aber warum sollte ich das je benutzen? Java Basics - Anfänger-Themen 3
L Generische Liste Java Basics - Anfänger-Themen 4
B Generische Queue programmieren Java Basics - Anfänger-Themen 5
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
A Probleme mit MergeSort Generische Liste Java Basics - Anfänger-Themen 0
A Generische Methode Java Basics - Anfänger-Themen 4
H Collections List in List<SpecificType> als stat. generische Methode zurückgeben Java Basics - Anfänger-Themen 4
J Probleme mit static generische Klasse Java Basics - Anfänger-Themen 6
M Generische Liste Java Basics - Anfänger-Themen 4
B Generische Methode Java Basics - Anfänger-Themen 2
B Generische Klasse Java Basics - Anfänger-Themen 7
B Generische Methoden Java Basics - Anfänger-Themen 8
F Collections Generische Klasse/Methoden Java Basics - Anfänger-Themen 19
L Generische Warteschlange Java Basics - Anfänger-Themen 8
A Generische Datentypen Java Basics - Anfänger-Themen 8
bluerob generische ArrayList -> erbende Objekte auslesen Java Basics - Anfänger-Themen 24
L Generische Containerklasse Java Basics - Anfänger-Themen 9
V Methoden Umwandlung in generische Methode Java Basics - Anfänger-Themen 8
A Generische Collections und Vererbung Java Basics - Anfänger-Themen 2
S Generische HashMap Java Basics - Anfänger-Themen 2
M Klassen Generische Klassen, Personen und Gruppen Java Basics - Anfänger-Themen 6
L Generische ArrayList, CastProblem Java Basics - Anfänger-Themen 2
W generische Module Java Basics - Anfänger-Themen 2
S Generics und "generische Feldzuweisungen" Java Basics - Anfänger-Themen 5
C unterschied generische typen und supertypen als methodenparameter Java Basics - Anfänger-Themen 3
D Datentypen Generische Collections und Warnings Java Basics - Anfänger-Themen 8
F Generische Methoden Problem Java Basics - Anfänger-Themen 5
E Generische Arrays durch Typecast mit Object-Array Java Basics - Anfänger-Themen 11
K Generische Klasse mit innerer Klasse | Problem mit Array Java Basics - Anfänger-Themen 6
B Was passiert, wenn eine konkrete Klasse von generische Klasse erbt? Java Basics - Anfänger-Themen 14
B Generische Vererbung was ist der Unterschied? Java Basics - Anfänger-Themen 4
W Generische Klassen Java Basics - Anfänger-Themen 3
W Generische Klassen und Casting Java Basics - Anfänger-Themen 6
F Generische Typen auch für statische Methoden? Java Basics - Anfänger-Themen 13
J array über generische arraylist Java Basics - Anfänger-Themen 7
B instanceof Prüfung für generische Typen Java Basics - Anfänger-Themen 5
N 2 dimensionale generische Arrays Java Basics - Anfänger-Themen 9
H Statische generische Methode Java Basics - Anfänger-Themen 2
G Frage zum Ungang mit Generische Datentypen Java Basics - Anfänger-Themen 4
0x7F800000 generische arrays mal wieder )-; Java Basics - Anfänger-Themen 6
D generische methode <T> void . Java Basics - Anfänger-Themen 9
J Generische Methoden Java Basics - Anfänger-Themen 6
G Doppelt verkettete, generische Liste Java Basics - Anfänger-Themen 11
S Parameterübergabe: Generische Klasse Java Basics - Anfänger-Themen 4
S generische Felder Java Basics - Anfänger-Themen 2
P Generische Klasse Java Basics - Anfänger-Themen 8
C Generische Klassen, das erste Mal. Java Basics - Anfänger-Themen 8
F Generische Methode - was bringt der Wildcard Operator? Java Basics - Anfänger-Themen 7
F Generische Liste von generischen Objekten. Java Basics - Anfänger-Themen 3
H generische Methoden Java Basics - Anfänger-Themen 5
N generische HashMap und Iterator Java Basics - Anfänger-Themen 2
H generische Bausteine, heterogene Datenstrukturen Java Basics - Anfänger-Themen 2
J generische klassen neue Instanz Java Basics - Anfänger-Themen 5
H Generische Klassen. Java Basics - Anfänger-Themen 16
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
Rxiiz Objekt aus ComboBox entfernen Java Basics - Anfänger-Themen 4
I JSON in Objekt umwandeln Java Basics - Anfänger-Themen 3
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
B Objekt aus generalisierter Liste entfernen Java Basics - Anfänger-Themen 11
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
Say Objekt Java Basics - Anfänger-Themen 4
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2
K wie kann ich alle Attribute von dem Objekt(pagode) ausgeben lassen ? Java Basics - Anfänger-Themen 3
H Ein übergegebenes Objekt auf null setzen Java Basics - Anfänger-Themen 9
M BlueJ Objekt in Objektliste Java Basics - Anfänger-Themen 2
B Objekt in Klassendiagramm an fremdes Objekt weiterreichen? Java Basics - Anfänger-Themen 6
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
amelie123456 Objekt Farbe Quellcode Java Basics - Anfänger-Themen 4
M Objekt in einem Objekt speichern Java Basics - Anfänger-Themen 9
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
missy72 Klassen Objekt Array NullPointerException Java Basics - Anfänger-Themen 3
J Hinzufügen eines Objektes in ein Objekt-Array Java Basics - Anfänger-Themen 62
O Warum bekommen wir nicht die Referenz vom zurückgegebenen Objekt? Java Basics - Anfänger-Themen 4
K Ein Objekt Auto kennt den Inhalt seines links und rechtsstehenden Autos, wie soll man das ermöglichen Java Basics - Anfänger-Themen 2
W Unterschiede bei Zugriff auf Objekt und Klassenvariablen über einen Getter? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben