Я создал несколько объектов BufferedImage и сохранил их в трехмерном массиве. Чтобы переместить мои объекты по массиву, мне нужно создать глубокую копию полного 3D-массива и после ... только после того, как я смогу изменить значения моего скопированного массива, чтобы вернуть его.
Когда я создаю первые два массива объектов ( new BufferedImage [temp1.length] [] [] и новый BufferedImage [temp1 [i] .length] [] ), чтобы перебирать их , идентификаторы хранилища полностью отличаются от идентификаторов массивов, которые я скопировал из .. Пока все хорошо .. (проверено в режиме отладки)
Проблема заключается в том, что после моего последнего нового объекта массива l oop я не знаю, как скопировать собранное значение int k .
Если я установил temp 2 [ i ] [ j ] [ k ] = temp1 [ i ] [ j ] [ k ] .. код принимается, но относится только к сохраненному местоположению идентификатора (малая копия), он не создает новый. (В режиме отладки я вижу изменение идентификатора на тот же идентификатор после создания k ..
Когда я запускаю код, многие местоположения устанавливаются как новые объект ... но эта проблема вызывает несколько значений null в моих местах хранения во время выполнения.
Пробовал использовать new снова ключевое слово, но оно не принято, потому что у меня уже есть количество массивов для 3D-массивов.
Итак ... как правильно написать последний шаг этого кода ..
enter code here
частный BufferedImage [] [] [] микс (BufferedImage [] [] [] temp1) {
BufferedImage [][][] temp2 = new BufferedImage [temp1.length][][];
for(int i=0 ; i <temp1.length;i++) {
temp2[i] = new BufferedImage [temp1[i].length][];
for(int j=0;j<temp1[i].length;j++) {
temp2[i][j] = new BufferedImage[temp1[i][j].length];
for(int k=0;k<temp1[i][j].length;k++) {
// ** before this step.. the storage ID of temp2 = a different one (stil good)
temp2[i][j][k] = temp1[i][j][k];
// ** after this step.. the storage ID of temp2 = the same as temp 1 (not good)
}
}
}
return temp2;
}