<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    lifelinger

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      1 Posts :: 0 Stories :: 2 Comments :: 0 Trackbacks
    今天差點被一段代碼給陷阱了。
    1 List<BidDO> bidDOs=result.getBids();
    2 List<AuctionBid> abids = new ArrayList<AuctionBid>();
    3 AuctionBid abid = new AuctionBid();
    4 for(BidDO bid : bidDOs){
    5   abid = this.translate(bid);//把bidDO轉成AuctionBid
    6   abids.add(abid);
    7 }
    8 
    debug的時候才發現abids里面的值都是同一個,而且是最后add進去的那個abid值。原來是我add進去的abid都是對同一個對象的引用,每次重新賦值都會把原有的值給覆蓋掉了,才導致錯誤的結果。
    這個問題其實是挺簡單的,就是沒有注意變量的作用域.因為abid變量的作用域是全局的,是對對象AuctionBid的一個引用,所以在for循環中對abid的不同賦值,其實都是對AuctionBid對象產生了影響,因為你使用的是同一個引用(指針)。
    解決的話把AuctionBid abid = new AuctionBid()這句在for循環中聲明即可。
    posted on 2010-03-22 22:12 whicky 閱讀(94) 評論(2)  編輯  收藏

    Feedback

    # re: 陷阱--作用域范圍 2010-03-22 23:31 xylz
    List<Integer> list = new ArrayList<Integer>();
    Integer v=new Integer(0);
    for(int i=0;i<10;i++) {
    v=new Integer(i);
    list.add(v);
    }
    for(Integer x:list)
    System.out.println(x);

    Run:
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
      回復  更多評論
      

    # re: 陷阱--作用域范圍 2010-03-23 10:08 whicky
    @xylz
    Integer v=new Integer(0);
    v=new Integer(i);
    這個不是一樣的么?  回復  更多評論
      


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 18亚洲男同志videos网站| 亚洲一区影音先锋色资源| 香港a毛片免费观看 | 国产成人免费a在线资源| 亚洲综合色丁香婷婷六月图片| 综合在线免费视频| 亚洲香蕉在线观看| 好男人www免费高清视频在线| 久久亚洲欧洲国产综合| 久久最新免费视频| 永久免费av无码网站大全| 亚洲一卡一卡二新区无人区| 日韩免费观看视频| 国产亚洲福利精品一区二区| 亚洲国产专区一区| 国产在线观看xxxx免费| 18gay台湾男同亚洲男同| 精品熟女少妇AV免费观看| 久久久亚洲精华液精华液精华液 | 毛片免费全部播放一级| 亚洲精品无码成人片久久不卡 | 久久亚洲精品无码播放| 免费观看久久精彩视频| 亚洲精品白色在线发布| 成人性生交大片免费看午夜a| 老司机午夜免费视频| 久久夜色精品国产亚洲av| 99精品国产成人a∨免费看| 国产亚洲福利在线视频| 亚洲?V无码乱码国产精品| a视频在线免费观看| 亚洲天堂电影在线观看| 国产免费久久精品| 巨胸喷奶水视频www免费视频| 久久亚洲春色中文字幕久久久| 在线免费观看一区二区三区| 二个人看的www免费视频| 亚洲一区精品视频在线| 亚洲精品一级无码鲁丝片 | 99精品热线在线观看免费视频 | 久久国产精品亚洲综合|