Hi
ich bin mir nicht sicher, ob ich deine Frage

richtig verstehe.
listIterator()-Methode gibt kein Objekt aus, warum?
...
die Methode listIterator() irgendeiner List-Implementation gibt den Typ ListIterator als Referenztyp aus.
"zurück". Ausgeben, zB. am Bildschirm, tut die Methode gar nichts, und soll sie auch nicht.
zeigt die Referenzvariable stringListIterator auf irgendein Objekt? Zeigt sie überhaupt auf irgendwas?
Natürlich.
Die Variable stringListIterator referenziert ein Objekt vom vom Typ ListIterator<>,
das die Methode .listIterator() von stringListe erzeugt hat
Gibt es eigentlich ein Stichwort für solche Methoden(Methoden, die nach deren Aufruf kein extra Objekt erzeugen)?
Methoden, die kein Objekt returnen, haben
a) Returntyp void
b) Returntyp int, float etc. (ob man solche einfachen Variablen Objekte nennen kann ist subjektiv, ich tus nicht)
c) oder returnen null (nicht den String "null", sondern null wie in "kein objekt").
Aber so eine Methode hast du nicht. listIterator() von stringListe gibt ein ganz echtes
existierendes Objekt zurück. Es kann nicht anders, nur echte Objekte oder null. Methoden
wie die, für die du ein Stichwort suchst, gibt es nicht.
Ich bin etwas verzweifelt aus folgendem Grund:
stringListeIterator.add("null") fügt "null" in die stringListe vorne hinzu. Wie ist das von stringListe referenzierte Objekt mit dem von stringListeIterator referezierten Objekt "verbunden", wenn überhaupt?
EIn Iterator für eine ArrayList ist prinzipiell dafür gedacht, alle Elemente der ArrayList von vorn bis hinten durchzulaufen und sich dabei selber die Position zu merken, ohne dass du das musst. Prinzipiell gibts so Methoden wie gibMirDasAktuelleElement() und weiter() und gibtsNochEinElementOderNicht), nur heißen die Methoden anders. Sowas wie eine for-Schleifen überschneidet sich sehr mit dem Sinn eines Iterators, Iteratoren haben aber etwas mehr/andere mögliche Anwendungsgebiete (geht hier zu weit).
Das IteratorObjekt hat in sich, als Membervariablen, mindestens eine Referenz auf die originale ArrayList, und eine Positionsnummer.
Zum eigentlichen Durchlauf-Sinn bietet der Iterator von ArrayLists zusätzlich auch an, Elemente einzufügen bzw. zu löschen, so wie add() und remove() auf der originalen ArrayList. add() und remove() vom Iterator tun prinzipiell nichts anderes, also add() und remove() der ArrayList aufzurufen, die wird mithilfe der intern gespeicherten Referenz gefunden.
Erst weiterlesen wenn bisher alles verstanden wurde:
Der Iterator kennt seine ArrayList, aber die Al. kennt den I. nicht. Wenn man direkt bei der Al Elemente einfügt kann die Al das dem I nicht mitteilen, und weil der es damit überhaupt nicht weiß, könnte er mit seiner Positionsnummer in der jetzt veränderten Al durcheinanderkommen. zB. wenn man nach der Al-Änderung weiter die Elemente durchlaufen will, dass man dann ein paar die man schon hatte wieder bekommt, oder ein paar ausgelassen werden. Das ist auch ausdrücklich in der Doku beschrieben: Nach Änderungen auf der AL darf man sich auf bestehende It's praktisch nicht mehr verlassen, man kann sich maximal neue erzeugen. Unter anderem deswegen hat der It auch add() und remove(): Wenn man mit denen in der Al herumändert weiß es der It und passt seine Position entsprechend an, sodass jedes Element wirklich nur/genau einmal durchlaufen wird.