次の結果が深いまたは浅いコピーになるかどうかわかりませんか?配列の深いコピーまたは浅いコピーを複製しますか?
public void viewImages(final String[] instancesFilename) {
String[] instances = (String[])instancesFilename.clone();
}
文字列配列を簡単にコピーする方法はありますか?
次の結果が深いまたは浅いコピーになるかどうかわかりませんか?配列の深いコピーまたは浅いコピーを複製しますか?
public void viewImages(final String[] instancesFilename) {
String[] instances = (String[])instancesFilename.clone();
}
文字列配列を簡単にコピーする方法はありますか?
Javaの文字列は変更できません(値を変更できません)。したがって、文字列をコピーするときに深いコピーと浅いコピーの間に検出可能な違いはありません。
さらに参考にしてください:コピーは浅くなりますが、文字列は変更不可能なので問題にはなりません。
ああ、面白い事実:ストリングはクローンメソッドでクローン化できません。そのため、クローンメソッドで文字列を完全コピーしようとすると、CloneNotSupportedExceptionが発生します。
また、配列クラスにはcopyOfメソッドがあります。これは一般的に私が配列のコピーを作成するために使用するものです。 Heresとすべての相違点の説明:http://forum.codecall.net/topic/49450-copying-arrays/
興味深いのはarticle discussing using serialization to make deep copiesです。
コールグラフ内のオブジェクトは、3層アプリケーションの多くのビジネスタイプではシリアライゼーションをサポートする必要がありますが、必要に応じてそれが必要です。
この記事では、ディープコピーとシャローコピーについて、いくつかの図を使って説明します。
著者は 'String'ではなく' String [] 'をコピーするように求めています。 'instancesFilename'の要素は後で外部から変更することができるので、OPは配列のコピーを作成する必要があります。 –
これは*検出可能です*(参照は同じですが)文字列を適切に使用している場合は重要ではありません。 –
@PhilippReichart:しかしOPは既にクローンを実行しています。つまり、 "深いコピー"と "浅いコピー"は、文字列がクローン化されているかどうかだけです。この回答では、ほとんど常に重要ではありません。 –