Invocare il clone della superclasse (che nel tuo caso è proprio Object) è corretto. Solo che devi sapere che il clone di Object si limita a copiare pedestremente il valore di ogni singolo campo. Se un campo è primitivo ... hai proprio una copia. Se il campo è un reference ... copia proprio il valore del reference. NON clona l'oggetto referenziato!Originariamente inviato da lramellavotta
codice:public Utenti clone() throws CloneNotSupportedException { Utenti ut = (Utenti) super.clone(); return ut; }
Se hai 2 oggetti Utenti A e B (clonato) i loro campi 'abilitato' faranno riferimento allo stesso identico oggetto Boolean (se non null, chiaramente). Il che potrebbe andarti bene ma nella maggior parte casi non è così.
Quindi l'approccio dovrebbe essere: si invoca clone() di Object per copiare pari pari i campi e per quei campi che sono di tipo reference (e nota: specialmente se sono oggetti "mutabili") si aggiunge del codice per clonare davvero l'oggetto.
E nota: ho parlato di oggetti mutabili. Prendiamo String (che è immutabile). Se anche i due oggetti "originale" e "clonato" hanno lo stesso riferimento al medesimo oggetto String .... quale problema ci sarebbe? Nessuno, l'oggetto String non può cambiare stato.

Rispondi quotando