public final поле length (длина), которое содержит число компонентов массива (length (длина) может быть только неотрицательной)
public метод clone, который переопределяет метод того же имени в классе Оbjectи не генерирует контролируемыхисключительныхситуаций.
Все члены, унаследованные от класса Object; только метод из Object не унаследуется clone.
Массив таким образом имеет те же самые методы что и следующий класс
class A implements Cloneable {
public final int length = X;
public Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
throw new InternalError(e.getMessage());
}
}
}
Каждые массив реализуется интерфейсом Cloneable. Эти массивы являются cloneable, как показано в тестирующей программе:
class Test {
public static void main(String[] args) {
int ia1[] = { 1, 2 };
int ia2[] = (int[])ia1.clone();
System.out.print((ia1 == ia2) + " ");
ia1[1]++;
System.out.println(ia2[1]);
}
}
Которая выводит:
false 2
и которая показывает что компоненты массивов, обозначенных через ia1 и ia2, являются различными переменными. (В некоторых ранних реализациях языка Ява этот пример сбивается при компиляции, потому что компилятор неверно полагал, что метод clone для массива может генерировать CloneNotSupportedException.)
Метод сlone многомерного массива создает только одномерный новый массив. Подмассивы оказываются общими, как показано в примере программы :
class Test {
public static void main(String[] args) throws Throwable {