2015-04-29 2 views
-1
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(), который меняет пару элементов в массиве с условием состояния. Затем мы перепечатываем значение из первого состояния, которое не было изменено, они разные.Изменение одного объекта меняет значение на второй объект

ответ

1

0 Кто из нас State? Если они являются объектами, вы не делаете копией, используя getMember(), но передавая ссылку на них второму конструктору. Если вы затем вызываете метод, который меняет член первого объекта, то идентичный элемент также изменяется во втором объекте.

Смежные вопросы