list中add覆盖处理

  1. ArrayList myList = new ArraList<User>();  
  2. for(.....)  
  3. {  
  4.     Userst = new User;  
  5.     for(.....)  
  6.         {  
  7.             st = ooxx;  
  8.             myList.add(st);  
  9.         }  
  10. }  

写成类似上面程序的话,新加入的st会覆盖上一个st,不希望这样的话,必须把实例化st的过程(SomeType st = new SomeType();这句)放进第二个for循环中.

原因:

其实add加进去的是对象的一个引用,对象实例化放在循环外面,你每次都更新了这个引用的值,当然list里面的值都一样的。如果把SomeType st = new SomeType;放到循环里面,每次都生成一个新的对象,更改自身不会对其他元素有影响...

你可能感兴趣的:(JAVA面向对象)