我似乎無法閱讀任何類似的問題得到明確確切的答案,我使用的是拷貝構造函數試圖深克隆Java中的對象,這是一個深刻的副本:爪哇,這是一個深層複製?
public class Tile{
Image sprite = null;
int x = 0;
int y = 0;
public Tile(Image setImage, int sX, int sY){
this.sprite = setImage;
this.x = sX;
this.y = sY;
}
public Tile(Tile copyTile){
this.sprite = copyTile.sprite;
this.x = copyTile.x;
this.y = copyTile.y;
}
public void setNewLocation(int sX, int sY){
this.x = sX;
this.y = sY;
}
}
後來,當我創建我的瓷磚地圖我可以做這樣的事情
List<Tile> tileList = new List<Tile>();
Tile masterGrassTile = new Tile(grassImage, 0,0);
tileList.set(0,new Tile(masterGrassTile));
tileList.set(1,new Tile(masterGrassTile));
tileList.get(0).setNewLocation(0,32);
tileList.get(1).setNewLocation(0,64);
如果我要在他們各自的位置呈現這兩個瓷磚,那會有用嗎?或者是作業tileList.get(1).setNewLocation(0,64);影響就像一個參考,他們都具有與最後一個作業相同的位置。
我已經意識到,它顯然是一個部分複製,圖像仍然是一個參考,因爲我傳遞一個對象,但int完全複製,因爲它們是原始的!使其成爲深度複製ID必須使用.clone()或新的圖像(copyImage.sprite)克隆圖像;以便它在內存中創建一個新的位置。謝謝你的迴應! – Snowdrama 2013-03-25 09:14:59
@JayPC很高興我可以幫助一些,這聽起來像你的正確軌道。好問題! – 2013-03-25 09:23:17