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

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

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

    隨筆 - 312, 文章 - 14, 評論 - 1393, 引用 - 0
    數據加載中……

    如何防止覆蓋(override)toString方法時產生遞歸調用

    本文為原創,如需轉載,請注明作者和出處,謝謝!

        在Java中任何對象都繼承于Object類,因此,每個類都有一個toString方法用于返回當前對象的字符串形式(可能是對象地址或其他和對象相關的信息)。在每個類中也可以覆蓋toString方法以返回自定義的字符串。如下面的代碼將以一定的格式返回對象的地址:


    package string;

    public class InfiniteRecursion
    {
        
    public String toString()
        {
            
    return "address:" + this;
        }
        
    public static void main(String[] args)
        {
            System.out.println(
    new InfiniteRecursion().toString());
        }
    }

    如果運行上面的程序,將拋出StackOverflowError異常,這說明程序的工作棧溢出了。導致這種情況最常見的錯誤就是無限遞歸。這們發現在toString中使用this來返回對象的地址,如果這樣調用,將會無限調用InfiniteRecursion類的toString方法。如果要避免這種情況的出現,要將toString改成如下的形式:


    public String toString()
    {
        
    return "address:" + super.toString();
    }

        也就是說,不能再調用當前類的toString方法,必須調用當前類父類的toString方法才能返回正確的結果。




    Android開發完全講義(第2版)(本書版權已輸出到臺灣)

    http://product.dangdang.com/product.aspx?product_id=22741502



    Android高薪之路:Android程序員面試寶典 http://book.360buy.com/10970314.html


    新浪微博:http://t.sina.com.cn/androidguy   昵稱:李寧_Lining

    posted on 2008-05-07 16:07 銀河使者 閱讀(1985) 評論(7)  編輯  收藏 所屬分類: java 原創

    評論

    # re: 如何防止重載toString方法時產生遞歸調用  回復  更多評論   

    我想,標題有誤吧,“重載”應改為“重寫”。
    重載與重寫是不一樣的!
    2008-05-07 22:52 | dotnetMac

    # re: 如何防止重載toString方法時產生遞歸調用  回復  更多評論   

    System.out.println(new InfiniteRecursion()) is good enough.
    2008-05-08 04:15 | Wendong

    # re: 如何防止覆蓋(override)toString方法時產生遞歸調用  回復  更多評論   

    沒錯,是覆蓋或重寫(override),已經改過來了!
    2008-05-08 08:48 | 銀河使者

    # re: 如何防止覆蓋(override)toString方法時產生遞歸調用  回復  更多評論   

    可能是對重載印象較深,哈哈,內容全都是覆蓋。
    2008-05-08 08:49 | 銀河使者

    # re: 如何防止覆蓋(override)toString方法時產生遞歸調用  回復  更多評論   

    另外System.out.println(new InfiniteRecursion());和 System.out.println(new InfiniteRecursion().toString());是完全一樣的,都會拋出java.lang.StackOverflowError異常
    2008-05-08 09:11 | 銀河使者

    # re: 如何防止覆蓋(override)toString方法時產生遞歸調用  回復  更多評論   

    誰會這樣重寫toString呢,我們知道,如果用戶沒有覆蓋toString拿直接print
    this 就默認調用toString方法啊
    2008-05-08 12:03 | 愛上對方

    # re: 如何防止覆蓋(override)toString方法時產生遞歸調用  回復  更多評論   

    本文只是個引子,雖然標簽是toString方法,但我們可以引申到其他的任何方法。
    2008-05-08 12:09 | 銀河使者
    主站蜘蛛池模板: 免费大片av手机看片| 国产精品亚洲综合久久| 成年女人A毛片免费视频| 亚洲国产婷婷综合在线精品| 国产成人久久精品亚洲小说| 国产免费观看青青草原网站| 精品久久亚洲一级α| 亚洲精品乱码久久久久久不卡| 美女视频黄.免费网址| 亚洲第一视频在线观看免费| 国产精品美女免费视频观看| 精品国产亚洲一区二区三区| 久久国产精品成人免费| 亚洲精品美女在线观看播放| 99久久这里只精品国产免费| 亚洲AV无码一区二区一二区| 亚洲成人影院在线观看| A片在线免费观看| 亚洲毛片免费视频| 日韩视频免费在线| 色婷婷综合缴情综免费观看| 国产亚洲3p无码一区二区| 5555在线播放免费播放| 亚洲一区二区无码偷拍| 亚洲精品99久久久久中文字幕 | 男女免费观看在线爽爽爽视频 | 自拍日韩亚洲一区在线| 国产免费久久精品久久久| 男女一边摸一边做爽的免费视频| 久久夜色精品国产嚕嚕亚洲av| 免费A级毛片无码A∨免费| 亚洲日韩中文字幕一区| 亚洲伊人久久成综合人影院| 日韩中文字幕免费视频| 亚洲国产精品ⅴa在线观看| 亚洲香蕉网久久综合影视| 足恋玩丝袜脚视频免费网站| 国产成人高清亚洲一区91| 久久久亚洲精品无码| 免费无遮挡无码视频网站| 九九99热免费最新版|