Novità:
ho capito cosa intendevi dire allora ho fatto questo nella surface:
Chiaramente Piece lo fatta clonaeble e ci ho definito il medoto super.clone()codice:public Object clone() { try { Surface cloned = (Surface) super.clone(); cloned.ground = (Piece[][]) ground.clone(); for (int x=0;x<l;x++){ for (int y=0;y<h;y++) cloned.ground[x][y]=(Piece)ground[x][y].clone(); } return cloned; } catch (CloneNotSupportedException e) { // non succede mai perché implementiamo Cloneable return null; } }
Così fatta mi viene creato un oggetto cloned che ha id diverso dall'originale un ground che ha id diverso mentre ogni elemento del ground rimane invariato. La cosa che non capisco e che ho fatto il doppio for per clonare ogni elemento visto che se funge per ground e surface dovrebbe funzionare anche per i singoli elementi.. invece no .. quando si aggiornano i singoli elementi di cloned.ground viene aggiornato l'id anche nell'originale.. Com'è possibile?

Rispondi quotando