c.getData()
будет не скопировать весь массив, по крайней мере, не в том коде, который вы вставили.
Это делает спорные вопросы спорными, но, конечно же, dataIter
отлично работает здесь.
Предлагаю вам рассмотреть, как работает модель памяти java.Все не примитивные значения (все объекты) передаются в виде ссылки.this.data
- указатель на массив.Если вы вернете его, вы вернете копию указателя, представляющую собой небольшое число (обычно 64-разрядное), которое ссылается на массив.
Вы можете тривиально проверить это: call .getData () иизменить что-то в массиве.Эта модификация также произойдет в MyClass
, потому что есть только один массив, с полем data
и результатом вызова getData()
со ссылкой на этот один массив.