为什么clone()方法无法正常工作?

时间:2013-01-09 21:25:56

标签: java clone

我有一个名为'link_occur_nodup'的二维向量,其中包含的数据为[[5,2,1,1],[2,1,1]]。现在,如果我尝试做

Vector<Vector<Integer>> temp=(Vector<Vector<Integer>>) link_occur_nodup.clone();
    temp.elementAt(0).set(1, 50);
    System.out.println(temp+" "+link_occur_nodup);

输出是: [[5,50,1,1],[2,1,1]] [[5,50,1,1],[2,1,1]] 我想知道为什么两个载体中的值都发生了变化?相反,它必须只在'临时'向量中。有人可以解释一下吗?

2 个答案:

答案 0 :(得分:12)

clone只执行浅层复制:因此您获得一个新的Vector,其中包含与原始对象相同的对象。这是预期的行为。

如果您想要不同的行为,则需要自己手动复制内部Vector。 (这是使用clone是不明智的众多原因之一。)

答案 1 :(得分:3)

你克隆了外部 Vector。

您的克隆载体包含与原始载体相同的内部载体。