Java LanguageClonazione dell'oggetto


Osservazioni

La clonazione può essere complicata, specialmente quando i campi dell'oggetto contengono altri oggetti. Vi sono situazioni in cui si desidera eseguire una copia profonda , invece di copiare solo i valori del campo (cioè i riferimenti agli altri oggetti).

La linea di fondo è clone è rotto , e si dovrebbe pensare due volte prima di implementare l'interfaccia Cloneable e sovrascrivere il metodo clone . Il metodo clone è dichiarato nella classe Object e non nell'interfaccia Cloneable , quindi Cloneable non funziona come interfaccia perché manca un metodo clone pubblico. Il risultato è che il contratto per l'uso del clone è sottilmente documentato e debolmente applicato. Ad esempio, una classe che sovrascrive il clone volte si basa su tutte le sue classi genitore che sovrascrivono anche il clone . Non sono forzati a farlo, e se non lo fanno, il tuo codice può generare eccezioni.

Una soluzione molto migliore per fornire funzionalità di clonazione è quella di fornire un costruttore di copia o una fabbrica di copie . Fai riferimento a Joshua Bloch's Effective Java Item 11: Override clone in modo giudizioso.

Clonazione dell'oggetto Esempi correlati