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

use*_*712 1 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);
Run Code Online (Sandbox Code Playgroud)

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

Lou*_*man 12

clone只做一个浅的副本:所以你得到一个新Vector的引用与原始相同的对象.这是预期的行为.

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