Domanda

In Java, dici di avere una classe che contiene un ArrayList (o qualsiasi raccolta) di oggetti.

Come si farebbe con il ritorno di uno di questi oggetti in modo che il chiamante non vedere eventuali future modifiche all'oggetto made in ArrayList?

cioèsi desidera restituire un profondo copia dell'oggetto, ma non so se è clonabile.

È stato utile?

Soluzione

Girare in una spec:
-che gli oggetti devono implementare un'interfaccia per essere ammessi nella collezione Qualcosa di simile ArrayList<ICloneable>()

Quindi si può essere certi che fai sempre una copia profonda - l'interfaccia deve avere un metodo che è garantito per restituire una copia profonda.

Io penso che sia il migliore che si può fare.

Altri suggerimenti

Una possibilità è quella di utilizzare la serializzazione.Ecco un post che lo spiega:

http://weblogs.java.net/blog/emcmanus/archive/2007/04/cloning_java_ob.html

Suppongo sia un ovbious risposta:

Fare un requisito per le classi che si trovano nella collezione per essere clonabile.Si potrebbe verificare che al momento dell'inserimento o a tempo di recupero, ciò che rende più senso, e lanciare un'eccezione.

O se l'elemento non è clonabile, solo non il ritorno con l'opzione di riferimento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top