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交换数组中的几个元素。然后我们重新打印第一个状态的值,即未更改的值,它们是不同的。
答案 0 :(得分:1)
State
的成员是什么?如果它们是对象,则不要使用getMember()
复制它们,而是将对它们的引用传递给第二个构造函数。如果然后调用一个更改第一个对象成员的方法,则同样的成员也会在第二个对象中更改。