Предполагая, что resultSet
является реализацией из стандартной библиотеки Java, ответ на вопрос «глубокой или мелкой копии» является «ни одним». ListIterator
s из List
классы в стандартной библиотеке Java не возвращают копию; они возвращают ссылку , поэтому вы получаете доступ к объекту, хранящемуся в List
, а не его копии.
Поскольку массивы Java изменяемы, любые изменения, которые ваш цикл делает до data
, выполняются на массиве Object[]
, хранящемся в списке.
Как Eran правильно отмечает в своем комментарии, так как List
и ListIterator
только интерфейсы, то вполне возможно, чтобы придумать реализацию, которая возвращает копию элементов списка, а не ссылки на фактические элементы. Эти копии могут быть глубокими или неглубокими, в зависимости от вашей собственной реализации. Однако реализации списков, предоставляемые библиотекой Java, всегда возвращают ссылки на фактические элементы списка.
Это будет зависеть от типа 'resultSet'. – Eran
@Eran Я думаю, что довольно безопасно предположить, что 'resultSet' является' List'. – dasblinkenlight
@dasblinkenlight Но мы не можем предположить, какая реализация List это (хотя никакая реализация, которую я знаю, не возвращает глубокую копию, это не означает, что таких реализаций нет). – Eran