public class aaa {  private int seqNo = 2;
  public aaa(int ) {
 
    List<aBean> beanlist = new ArrayList<aBean>();
    aBean bean = new aBean();
    for (int i=0; i<3; i++) {
      seqNo += 1;      bean.setno(seqNo);      beanlist.add(bean);
    }
  }
}
为什么beanlist的3个bean的no都是5呢?请大家帮帮该怎么改?

解决方案 »

  1.   

        for (int i=0; i <3; i++) {
          aBean bean = new aBean();
          seqNo += 1; 
      

  2.   

    bean.setno();的方法是怎么写的呀。每次循环都是操作同一个对象,后一次的值把前一次的覆盖了
      

  3.   

    把aBean bean = new aBean()放入循环体内,不然每次都是操作同一个bean 当然最后3个值都是5
      

  4.   


     public aaa(int ) {     List <aBean> beanlist = new ArrayList <aBean>(); 
          for (int i=0; i <3; i++) { 
      aBean bean = new aBean();       seqNo += 1;       bean.setno(seqNo);       beanlist.add(bean); 
        } 
      } 
      

  5.   

    这样应该可以,lz每次都是操作同一个bean! 当然最后3个值都是5!
    不仅3个值都是5,beanlist中的3个bean都是一样的!
      

  6.   

    嗯,aBean bean = new aBean(); 放在FOR循环里面,但是最好是把变量的申请放在FOR循环的外面,这样可以防止产生过多的变量,如这样:public aaa(int ) {     List <aBean> beanlist = new ArrayList <aBean>(); 
        aBean bean=null;
          for (int i=0; i <3; i++) { 
            bean = new aBean(); 
            seqNo += 1; 
            bean.setno(seqNo); 
            beanlist.add(bean); 
        } 
      } 
      

  7.   

    aBean bean=null; 
          for (int i=0; i <3; i++) { 
            bean = new aBean(); 
            seqNo += 1; 
            bean.setno(seqNo); 
            beanlist.add(bean); 
        } 
    这个才是正解,每次循环时实例化一个对象