Самый простой способ создать глубокую копию массива - использовать встроенное семейство функций Arrays.copyOf
.
Например:
String [] srcArray = { "item 1", "item 2", "item 3" };
String [] copy = Arrays.copyOf(srcArray, srcArray.length);
Насколько вашКод идет, есть несколько проблем, которые выпрыгивают.В DemoJFileChooser.actionPerformed
вы всегда печатаете все 10 элементов массива пути через System.out.println
, но нет гарантии, что во всех этих элементах есть объект.Вы можете получить NullPointerException здесь.Ваш цикл for должен быть ограничен до x
.Кроме того, внутри этого цикла вы вызываете setArray(path)
, что означает, что вы вызываете эту функцию 10 раз без причины.Кроме того, вы действительно делаете path = path
, потому что вы передаете path
в setArray
, который присваивает путь.
Вы также должны убедиться, что x
не превысил размер path
, когдавы присваиваете ему path[x] = paths.getAbsoluteFile().toString();
.
В качестве отдельного совета вместо того, чтобы делать for(int i=0; i<10; i++) {...}
всякий раз, когда вы выполняете итерацию по массиву, вы можете использовать for(int i=0; i<theArray.length; i++) {...}
, чтобы при измененииразмер массива, вам не нужно идти и обновлять циклы for во всей вашей программе.