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


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲人成小说网站色| 亚洲人成毛片线播放| 四虎精品成人免费视频| 成年女人永久免费观看片| 亚洲一级在线观看| 国产一卡2卡3卡4卡2021免费观看| 亚洲妇女水蜜桃av网网站| 99久久免费看国产精品| 亚洲中文字幕人成乱码| 天天摸天天碰成人免费视频| 亚洲日本VA中文字幕久久道具| 免费观看的av毛片的网站| 国产青草亚洲香蕉精品久久| gogo全球高清大胆亚洲| eeuss免费影院| 无码久久精品国产亚洲Av影片| 97公开免费视频| 中文有码亚洲制服av片| 亚洲av午夜精品一区二区三区| 一级人做人爰a全过程免费视频| 亚洲午夜久久久影院| 99精品热线在线观看免费视频| 亚洲精品91在线| 国产成人啪精品视频免费网| 一级毛片免费不卡直观看| 亚洲国产成人片在线观看无码| 67194熟妇在线永久免费观看 | 国产资源免费观看| 国产免费内射又粗又爽密桃视频 | 波多野结衣久久高清免费| 男女超爽视频免费播放| 国产亚洲精品国产| 国产成人无码免费看视频软件| 色噜噜的亚洲男人的天堂| 亚洲人成网亚洲欧洲无码久久| 天天影院成人免费观看| 男男gay做爽爽免费视频| 亚洲美女精品视频| 亚洲国产a级视频| 免费在线观看h片| 成年免费a级毛片|