2012-04-12 17 views

答えて

14

Javaの文字列は変更できません(値を変更できません)。したがって、文字列をコピーするときに深いコピーと浅いコピーの間に検出可能な違いはありません。

さらに参考にしてください:コピーは浅くなりますが、文字列は変更不可能なので問題にはなりません。

ああ、面白い事実:ストリングはクローンメソッドでクローン化できません。そのため、クローンメソッドで文字列を完全コピーしようとすると、CloneNotSupportedExceptionが発生します。

+0

著者は 'String'ではなく' String [] 'をコピーするように求めています。 'instancesFilename'の要素は後で外部から変更することができるので、OPは配列のコピーを作成する必要があります。 –

+0

これは*検出可能です*(参照は同じですが)文字列を適切に使用している場合は重要ではありません。 –

+0

@PhilippReichart:しかしOPは既にクローンを実行しています。つまり、 "深いコピー"と "浅いコピー"は、文字列がクローン化されているかどうかだけです。この回答では、ほとんど常に重要ではありません。 –

1

興味深いのはarticle discussing using serialization to make deep copiesです。

コールグラフ内のオブジェクトは、3層アプリケーションの多くのビジネスタイプではシリアライゼーションをサポートする必要がありますが、必要に応じてそれが必要です。

この記事では、ディープコピーとシャローコピーについて、いくつかの図を使って説明します。

関連する問題