整理Effective Java書中Item 12: Always override toString心得筆記
主旨
Object
提供了一個 toString()
方法的預設實作,但它返回的字串通常不是使用者希望看到的。預設返回的字串由類名及其哈希碼的十六進制表示組成,例如:PhoneNumber@163b91
。這樣的格式雖然簡潔,但與 707-867-5309
比起來,並不具備足夠的資訊。
toString()
方法的通用契約指出,返回的字串應該是「簡潔且具資訊量的,且容易閱讀的格式」,但 PhoneNumber@163b91
這樣的字串雖簡潔,卻缺乏實際意義。契約還強調:「建議所有子類別都應該覆寫此方法」,這確實是個好建議!
劃重點
為什麼覆寫 toString()
方法很重要?
- 調試與可讀性:
toString()
方法在調試時非常有用,當物件被傳遞給println()
、printf()
、字串連接運算符或assert
,或是由除錯器印出時,toString()
會自動被呼叫。如果沒有覆寫toString()
,生成的診斷訊息可能完全沒有幫助。