有一个函数,传进去的是一个VECTOR,在函数里对这个VECTOR如何复制一个同样的VECTOR,操作第二个VECTOR,而不改变外面的VECTOR?void change(vecotr v){vecotr temp = new vector();
temp = v;
temp.setName("这样改变了v吗?");
}VOID MAIN()
{
vector one = NEW VECOTR;
one.setName("CSDN");
change(one);
System.out.println(one.getName());
}one的name改变了吗?你试试。然后告诉我如何使它不变。也就是相当于如何实现C++里的const参数
temp = v;
temp.setName("这样改变了v吗?");
}VOID MAIN()
{
vector one = NEW VECOTR;
one.setName("CSDN");
change(one);
System.out.println(one.getName());
}one的name改变了吗?你试试。然后告诉我如何使它不变。也就是相当于如何实现C++里的const参数
public int level;}public class Main {
Vector<LevelUp> vLevel = new Vector<LevelUp>();
public void initLevelUp() {
LevelUp lu_1 = new LevelUp();
lu_1.level = 10;
vLevel.add(lu_1);
LevelUp lu_2 = new LevelUp();
lu_2.level = 20;
vLevel.add(lu_2);
} public void change(Vector<LevelUp> vLU) {
Vector<LevelUp> temp = new Vector<LevelUp>();
temp = vLU;
temp.get(0).level = 30;
for (int i = 0; i <temp.size(); i++) {
System.out.println("change中 " + temp.get(i).level);
}
} public Main() {
initLevelUp();
for (int i = 0; i < vLevel.size(); i++) {
System.out.println("change前 " + vLevel.get(i).level);
} change(vLevel); for (int i = 0; i < vLevel.size(); i++) {
System.out.println("change后 " + vLevel.get(i).level);
} } public static void main(String[] args) {
Main main = new Main();
}
}
这个结果输出来是:
change前 10
change前 20
change中 30
change中 20
change后 30
change后 20
说明 change 函数 确实改变了 vLevelUp,我想请问,如何能使输出 变成
change前 10
change前 20
change中 30
change中 20
change后 10
change后 20
如果放的是引用对象,需要在对象里面重写clone()方法实现深拷贝,
然后再遍历把每个对象的clone()值放进新的集合里