JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Software Design » Effective Java  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 [Effective Java] 條款9 : 總是覆寫 toString()
metavige

metavige

版主

發文: 2133
積分: 10
於 2003-10-08 01:44 user profilesend a private message to usersend email to metavigereply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
在 java.lang.Object 裡面的 toString()
所傳回的字串是有包含 class 名稱, 後接一個 "@" 符號和一個不帶正副號的十六進制 hash 碼

但根據 toString() 通用契約的說法, 傳回的 string 應該是一段「簡明扼要、資訊豐富、易被人類閱讀」
其實我覺得蠻好玩的, 難道有猴子會來寫程式嗎???Stupid
不過以前倒是常說, 我們公司的魚會在晚上把我們的程式偷偷改掉
不然為啥常發生一些怪怪的錯誤???昨天晚上下班之前還可以的說Black Eye
抱歉, 沒有冒犯的意思, 純粹是突發的想法∼

實際應用中, toString() 應該傳回物件內令人感興趣的一切資訊
最理想的情況是傳回的字串帶有自我解釋性 (Self-explanatory)
比如說
1
2
3
4
5
6
7
8
9
10
11
public class metavige {
  private String name = "metavige";
  private static final int age = 18; 
  private static final String nickname = "handsome man";
 
  //....public methods
 
  public String toString() {
    return name + " is a " + nickname;
  }
}



但是, 「明確說明 toString() 回返值格式」也不是沒有缺點, 他的缺點在於, 一旦這麼做, 而且你的 class 被廣泛使用的話, 便將永遠被這種格式纏住而無法擺脫

但是不管是否「明確指定格式」, 你都應該在文件中清楚的表明你的意向, 如果你指定了格式, 更應當那麼做

以上面的例子來說
1
2
3
4
5
6
7
8
9
  /**
   *  本函式傳回 metavige 的資訊
   *  格式為 : XXXX is a YYYY
   *  其中 XXXX 為 metavige 的名字
   *  YYYY 為 他的暱稱
   */
  public String toString() {
    return name + " is a " + nickname;
  }


讀了這些註釋之後, 那些倚賴「格式細節」來寫程式或保存資料的程式員, 面對「因格式變化而帶來的影響」, 也就只能自扛責任了


reply to postreply to post
請各位新手參考 論壇規範Java 新手 FAQ
話題樹型展開
人氣 標題 作者 字數 發文時間
9197 [Effective Java] 條款9 : 總是覆寫 toString() metavige 1177 2003-10-08 01:44
8061 Re:[Effective Java] 條款9 : 總是覆寫 toString() frank 998 2003-11-28 03:14
8486 Re:[Effective Java] 條款9 : 總是覆寫 toString() metavige 63 2003-11-28 14:06
» JWorld@TW »  Software Design » Effective Java

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8