都是List惹得祸

这两天调试一个JAVA程序,搞得很是郁闷,看了快一天就是找不到问题所在。找来高手,半小时就找到了问题,很BT的问题。
      一个函数的参数是List类型的,而每次传参数的时候都用的是同一个变量,这就导致以前传过去的List在主函数的变量改变的同时也随之改变,导致我所有打开的新窗口内容都和最后一个窗口一致,很是bug。记住这个教训。贴一点示范代码:调用函数如下:

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传引用要注意的一点
 

posted on 2009-11-17 23:26  寂寞的肥肉  阅读(275)  评论(0编辑  收藏  举报

导航