clone()
создает поверхностную копию.Это означает, что элементы не будут клонированы.(Что если они не реализовали Cloneable
?)
Возможно, вы захотите использовать Arrays.copyOf(..)
для копирования массивов вместо clone()
(хотя клонирование подходит для массивов, в отличие от всего остального)
Если вы хотите глубокое клонирование, проверьте этот ответ
Небольшой пример, иллюстрирующий поверхностность clone()
, даже если элементы Cloneable
:
ArrayList[] array = new ArrayList[] {new ArrayList(), new ArrayList()};
ArrayList[] clone = array.clone();
for (int i = 0; i < clone.length; i ++) {
System.out.println(System.identityHashCode(array[i]));
System.out.println(System.identityHashCode(clone[i]));
System.out.println(System.identityHashCode(array[i].clone()));
System.out.println("-----");
}
Отпечатки:
4384790
4384790
9634993
-----
1641745
1641745
11077203
-----