2012-04-12 46 views

risposta

14

Le stringhe in Java sono imutable (Impossibile modificare il loro valore). Quindi non vi è alcuna differenza rilevabile tra una copia profonda e superficiale durante la copia di stringhe.

E solo per ulteriori riferimenti: la copia sarà superficiale ma non dovrebbe essere un problema poiché le stringhe sono imutibili.

Oh e fatto divertente: le stringhe non possono essere clonate con il metodo clone, quindi se provate a fare una copia profonda delle stringhe con il metodo clone, otterrete un CloneNotSupportedException.

+0

L'autore chiede di copiare 'String []', non 'String'. Gli elementi di 'instanceFilename' potrebbero essere modificati in seguito dall'esterno, quindi l'OP vuole creare una copia dell'array. –

+0

Bene è * rilevabile * (i riferimenti sono uguali) ma se si utilizzano le stringhe correttamente, non dovrebbe essere * significativo *. –

+0

@PhilippReichart: Ma l'OP sta già eseguendo un clone - "copia profonda" o "copia superficiale" in quel contesto possono riguardare solo se le stringhe sono clonate o meno - e come afferma questa risposta, è quasi sempre irrilevante. –

1

Ecco un interessante article discussing using serialization to make deep copies.

Gli oggetti nel grafo delle chiamate devono supportare la serializzazione tuttavia in molti tipi di business di applicazioni 3 Tier, che è necessario.

L'articolo fornisce una discussione di copia profonda e copia superficiale con alcuni diagrammi.

Problemi correlati