次の結果が深いコピーになるのか浅いコピーになるのかわかりませんか?
public void viewImages(final String[] instancesFilename) {
String[] instances = (String[])instancesFilename.clone();
}
文字列配列をディープ コピーする簡単で高速な方法はありますか?
次の結果が深いコピーになるのか浅いコピーになるのかわかりませんか?
public void viewImages(final String[] instancesFilename) {
String[] instances = (String[])instancesFilename.clone();
}
文字列配列をディープ コピーする簡単で高速な方法はありますか?
Java の文字列は不変です (値を変更できません)。したがって、文字列をコピーする場合、深いコピーと浅いコピーの間に検出可能な違いはありません。
さらに参考までに、コピーは浅いものになりますが、文字列は不変であるため、問題にはなりません。
面白い事実: clone メソッドを使用して文字列を複製することはできないため、clone メソッドを使用して文字列のディープ コピーを実行しようとすると、CloneNotSupportedException が発生します。
配列クラスには copyOf メソッドもあります。これは通常、配列のコピーを作成するために使用するものです。すべての違いのここと説明: http://forum.codecall.net/topic/49450-copying-arrays/
シリアライゼーションを使用してディープ コピーを作成する方法について説明している興味深い記事を次に示します。
コール グラフ内のオブジェクトはシリアライゼーションをサポートする必要がありますが、3 層アプリケーションの多くのビジネス タイプではその必要性があります。
この記事では、いくつかの図を使用してディープ コピーとシャロー コピーについて説明します。