ArrayListのcloneメソッド
お世話になります。
ArrayListのcloneメソッドなんですが、API上は「ArrayList のインスタンスのシャローコピーを返します。要素自体はコピーされません。 」と記載がありますが、
「ディープコピー」をしているような感じがして、なぜ「シャローコピー」と言っているのか、教えて欲しいです。
しかも、要素自体もコピーされているような…。
自分の理解では、
シャローコピー:コピー元、コピー先で同じオブジェクトを参照する
ディープコピー:コピー元、コピー先で違うオブジェクトを参照する
試したソースは以下です。
---------------
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<String>();
array.add("a");
array.add("b");
ArrayList<String> array2 = (ArrayList<String>) array.clone();
array2.add("c");
System.out.println("array:" + array);
System.out.println("array2:" + array2);
}
}
---------------
cloneメソッドはシャローコピーなので、array2で「c」がaddされたら、arrayも「c」が追加されて、
array:[a, b, c]
array2:[a, b, c]
となるはずが、
array:[a, b]
array2:[a, b, c]
となります。
array、array2は別々のオブジェクトを参照しているような気がします。
恐らく大きな勘違いをしているのかもしれませんが、
調べてもいまいち理解できませんでした。
お手数おかけしますが、よろしくお願い致します。
お礼
ご教授していただいたコードは確かにコンパイルエラーが発生しませんでした。 コードレビューでやり直しにならない方法を、お手数掛けますが、ご教授していただければ幸いです。