Я копирую объект tt в ttt, и я хочу внести изменения только в ttt, но когда я обновляю ttt, не знаю почему он обновляет мой tt вдоль ???? это моя функция change() возникла проблема?Объект копирования Java и обновленный скопированный объект
это главный класс:
package test;
public class Test {
public static void main(String[] args) {
Solution sol;
sol= new Solution();
sol.add();
sol.copy();
//this makechange function only update ttt only!!
sol.makechange();
sol.disOld();
System.out.println("===============");
sol.disNew();
}
}
это новый класс:
package test;
import java.util.ArrayList;
import java.util.List;
public class Solution {
Object[][] tt=new Object[2][2];
Object[][] ttt=new Object[2][2];
List l = new ArrayList<>();
public void add(){
l.add(100);
tt[0][0]=l;
l = new ArrayList<>();
l.add(123);
tt[0][1]=l;
l = new ArrayList<>();
}
public void disOld(){
for(int i=0; i<tt.length; i++){
for(int j=0; j<tt[i].length; j++){
System.out.println(tt[i][j]);
}
}
}
public void copy(){
ttt=tt;
}
public void makechange(){
l.add(99);
ttt[1][0]=l;
}
public void disNew(){
for(int i=0; i<ttt.length; i++){
for(int j=0; j<ttt[i].length; j++){
System.out.println(ttt[i][j]);
}
}
}
}
это мой выход:
[100]
[123]
[99]
null
===============
[100]
[123]
[99]
null
это мой ожидаемый результат должен быть таким:
[100]
[123]
null
null
===============
[100]
[123]
[99]
null
вы можете показать мне более подробно в кодировании ?? – hellohai
@hellohai Я связал еще один мой ответ, который посвящен одному и тому же вопросу. [Копирование объектов в Java не так просто, как вы могли бы подумать вначале] (http://stackoverflow.com/questions/869033/how-do-i-copy-an-object-in-java). – m0skit0
Ваш ответ сложный и не связанный с объектом, а не с списками – hellohai