2016-04-01 79 views
1

我想传递一个对象到列表中。该对象具有名为“moves”的String属性。在将对象传递给ArrayList之后,我想修改该对象以将“移动”的值重置为其原始状态,而不更改已传递给列表的对象。我该怎么做呢?将对象保存到列表中并修改对象的字符串而不修改列表中的条目?

我真的很挣扎请帮忙。

谢谢

我的代码是:

  if(B[i] && B[j] && !B[k]){ 
       B[i]=!B[i]; 
       B[j]=!B[j]; 
       B[k]=!B[k]; 
       String previousMoves=board.moves; 
       board.moves=board.moves+(i+"W"+k+", "); 
       board.store(B); 
       list.add(board); 
       board.moves=previousMoves;//Resetting string back to original 
       i++;j++;k++; 
       B=Arrays.copyOf(H, 33); 
      //Checks for a BWW situation 
      //Makes switch to WBB 
      } 
+2

你不能没有制作原始对象的副本。 – shmosel

+0

要存储2个状态,您显然需要2个对象 – Stewart

+0

@AliShobeiri,没有捷径。只需构建一个新对象并复制原始的所有字段。 – shmosel

回答

0

你必须使对象的副本。所以,你可以实现一个像clone()这样的方法或者一个构造函数,它使用与参数相同类型的对象。

+0

谢谢!完美工作! –