Angenommen, dass resultSet
eine List
Implementierung aus der Standard-Java-Bibliothek ist, ist die Antwort auf die Frage "tiefe oder flache Kopie" "weder". ListIterator
s von List
Klassen in der Standard-Java-Bibliothek geben keine Kopie zurück; Sie gibt eine Referenz zurück, so dass Sie auf das Objekt zugreifen, das in der List
gespeichert ist, keine Kopie davon.
Da Java-Arrays veränderbar sind, werden alle Änderungen, die Ihre Schleife an data
vornimmt, auf dem in der Liste gespeicherten Array Object[]
ausgeführt.
Wie Eran merkt richtig in seinem Kommentar, da List
und ListIterator
nur Schnittstellen sind, ist es durchaus denkbar ist mit einer Implementierung zu entwickeln, die Kopien von Listenelementen anstatt Verweise auf tatsächlichen Elemente zurückgibt. Diese Kopien können je nach Ihrer Implementierung tief oder oberflächlich sein. Listenimplementierungen, die von der Java-Bibliothek bereitgestellt werden, geben jedoch immer Verweise auf tatsächliche Listenelemente zurück.
Das hängt davon ab, welcher Typ von 'resultSet' ist. – Eran
@Eran Ich denke, es ist ziemlich sicher anzunehmen, dass 'resultSet' eine' List' ist. – dasblinkenlight
@dasblinkenlight Aber wir können nicht annehmen, welche List-Implementierung es ist (obwohl keine Implementierung, die ich kenne, eine tiefe Kopie zurückgibt, bedeutet das nicht, dass es keine solchen Implementierungen gibt). – Eran