<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 | 銀河使者
    主站蜘蛛池模板: 可以免费看黄的网站| XXX2高清在线观看免费视频| 亚洲精品视频免费| 天天影院成人免费观看| 四虎精品免费永久免费视频| 亚洲视频网站在线观看| 国产国拍亚洲精品福利| 国产在线不卡免费播放| 日韩免费精品视频| 日本特黄a级高清免费大片| 波多野结衣中文字幕免费视频| 久久国产乱子伦免费精品| 91成人免费福利网站在线| 特级毛片爽www免费版| 国产免费无码AV片在线观看不卡| 免费大片av手机看片高清| 亚洲国产精品无码第一区二区三区 | 国产色婷婷精品免费视频| 国产亚洲精品高清在线| 又爽又黄无遮挡高清免费视频| 大香人蕉免费视频75| 久久99精品免费视频| 成人电影在线免费观看| 99久久免费国产精精品| 麻豆一区二区免费播放网站| 免费人成网站在线播放| 色婷婷六月亚洲婷婷丁香| 亚洲AV中文无码乱人伦下载 | 亚洲乱码一区二区三区在线观看 | 波多野结衣一区二区免费视频| 亚洲精品国产成人片| 亚洲中文字幕日本无线码| 亚洲人成激情在线播放| 亚洲视频中文字幕在线| 男男gay做爽爽免费视频| 亚洲妇女无套内射精| 日本免费久久久久久久网站| 最近2022中文字幕免费视频| 四虎精品亚洲一区二区三区| 亚洲高清国产拍精品青青草原 | 欧美男同gv免费网站观看 |