都是List惹得祸
这两天调试一个JAVA程序,搞得很是郁闷,看了快一天就是找不到问题所在。找来高手,半小时就找到了问题,很BT的问题。
一个函数的参数是List类型的,而每次传参数的时候都用的是同一个变量,这就导致以前传过去的List在主函数的变量改变的同时也随之改变,导致我所有打开的新窗口内容都和最后一个窗口一致,很是bug。记住这个教训。贴一点示范代码:调用函数如下:
public class CallClass{
public class CallClass{
public List list;
public void method1(){
BeCalledClass a = new BeCalledClass();
a.method2(list);
}
}
public class BeCalledClass{
public void method2(List list){
.....//一些操作
}
}
当不断的调用主调函数中的method1时,会创建很多BeCalledClass,但是这些BeCalledClass都共享一个List,这就是JAVA传引用要注意的一点