修改一个对象正在改变第二个对象

时间:2015-04-29 07:47:17

标签: java

State st = sc.que.remove();

System.out.println(st.getMoves() +" - Goal: " + Arrays.toString(st.getGoal()) + "- Puzzle: " + Arrays.toString(st.getPuzzle()));

State ss = new State(st.getPuzzle(), st.getSpace(), st.getMoves(), st.getGoal());
ss.moveUp();

System.out.println(st.getMoves() +" - Goal: " + Arrays.toString(st.getGoal()) + "- Puzzle: " + Arrays.toString(st.getPuzzle()));

基本上我有一个州,我打印它的价值。然后我使用第一个值创建第二个状态来创建精确副本。我使用moveUp()方法修改第二个状态,该方法使用State交换数组中的几个元素。然后我们重新打印第一个状态的值,即未更改的值,它们是不同的。

1 个答案:

答案 0 :(得分:1)

State的成员是什么?如果它们是对象,则不要使用getMember() 复制它们,而是将对它们的引用传递给第二个构造函数。如果然后调用一个更改第一个对象成员的方法,则同样的成员也会在第二个对象中更改。