Verständnissprobleme 'einfach verkettete Listen'

Hallo zusammen! :smile:
Ich hab ein bisschen meine Probleme einfach verkettete Listen(oder eher objektorientiertes programmieren) zu verstehen.

Mal angenommen ich rufe 2 mal die Methode enqueue auf, wieso wird beim 2. Aufruf an der Stelle „first = item;“ der Wert von first nicht überschrieben sondern, wie es auch richtig ist, verkettet und man am Ende ein Objekt im Objekt erhält?!
Danke im vorraus :smile:

public class MyList {

 private class Item{
 T value = null;
 Item next = null;
 }

 private Item first = null;

 public void enqueue(T elem) {
 Item item = new Item(); 
 item.next = first;
 item.value = elem;
 first = item;

 }
}

Hi,

der Pointer first wurde ja vorher in item.next gerettet.

Oder ist das Problem zu verstehen, dass in Java alle Variablen eines Klassentyps in Wirklichkeit Pointer bzw. Referenzen auf die eigentliche Instanz im Speicher sind? Alle Methodenparameter, die einen Klassentyp haben, werden also immer als „call by reference“ übergeben. Nur die Primitivdatentypen int, double, boolean, etc. fallen aus diesem Schema raus. Und haben deshalb Wrapperklassen Integer, Double,…

Es wird also nicht die Instanz von first überschrieben, sondern nur die in first gespeicherte Adresse der Instanz.

Gruß, Lutz

ah okay das bringt mich weiter! :smile: vielen dank