シャローコピーとディープコピー

■シャローコピー
浅いコピー。参照をコピーする。
よって、コピー先を修正するとコピー元にも影響が出る。
配列のシャローコピーを行うstaticメソッドとして、

System.arraycopy(コピー元配列, コピー元開始インデックス, コピー先配列, コピー先開始インデックス, コピーする要素数)

がある。
■ディープコピー
深いコピー。インスタンスを新たに生成して内容をコピーする。
どのようにコピーするかはObjectのcloneメソッドをオーバーライドして定義する。
Objectのcloneメソッド自体はシャローコピーをするので注意。
配列のcloneメソッドはディープコピーをするようにオーバーライドされている。
(publicかつCloneNotSupportedExceptionをスローしないようにもしている。Objectのcloneはprotected。)
なお、java.lang.Cloneableを実装していないオブジェクトでcloneメソッドを呼び出すと、CloneNotSupportedExceptionがスローされる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です