<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);
    這個不是一樣的么?  回復  更多評論
      


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


    網站導航:
     
    主站蜘蛛池模板: 国产一级淫片a免费播放口之| 国产啪精品视频网站免费尤物| 久久WWW色情成人免费观看| 亚洲伦理一区二区| 麻豆高清免费国产一区| 亚洲噜噜噜噜噜影院在线播放 | 亚洲精品自偷自拍无码| 97无码免费人妻超级碰碰夜夜| 中文字幕无码精品亚洲资源网久久| 最近最好的中文字幕2019免费 | 99久久99这里只有免费的精品| 亚洲中文字幕日产乱码高清app| 中文字幕无码免费久久9一区9| 亚洲AV无码专区国产乱码电影 | 午夜免费福利小电影| 亚洲欧洲精品一区二区三区| 青青青免费国产在线视频小草| 亚洲成年人电影在线观看| 成人免费淫片在线费观看| 看免费毛片天天看| 亚洲熟妇丰满多毛XXXX| 99精品在线免费观看| 亚洲午夜成人精品无码色欲| 四虎永久免费网站免费观看| 国产精品美女久久久免费 | aa级毛片毛片免费观看久| 亚洲av一综合av一区| 在线视频免费观看高清| 国产亚洲精品成人久久网站| 国产亚洲真人做受在线观看| 57PAO成人国产永久免费视频| 亚洲av成人一区二区三区在线播放 | 亚洲欧洲春色校园另类小说| 日韩成人免费在线| a级片免费在线播放| 色偷偷亚洲女人天堂观看欧| 亚洲精品视频免费| 性xxxxx免费视频播放| 一道本不卡免费视频| 亚洲性色高清完整版在线观看| 无码欧精品亚洲日韩一区夜夜嗨 |