#toStringを常にオーバーライドする
新しいクラスを作ってtoStringしてみても"PhoneNumber@163b91"
のような別にもらっても嬉しくない文字列がかえってきます。
toStringに関する一般契約は「簡潔だが、人が読みやすくなっている有益な表現」です。
##サンプルコード
/**
* この電話番号の文字列表現を返します
* 文字列は14文字で構成されていて、その形式は、"(XXX) YYY-ZZZZ"です。
* XXXは市外局番で、 YYY-ZZZZは市内局番です。
* (各大文字は、1桁の数字を表しています。)
*
* この電話番号の3つの部分のどれかが、そのフィールドを埋めるには
* 桁が少ない場合には、そのフィールドの先頭が0で埋められます。
* たとえば、最後の4桁部分の番号が"123"だとしたら、文字列表現の最後の
* 4文字は"0123"となります。
*
* 市外局番のカッコの後に、市内局番と区切るための空白が一つあることに注意してください。
*/
@Override public String toString(){
return String.format("(%03d) %03d-%04d",
areaCode, prefix, lineNumber);
}
これで"{Jenny=(707) 867-5309}"
が返ってきますね!
toStringをきっちりオーバーライドすることは、このクラスを使う別な人のプログラムの解析をする時間を省略してあげることにつながります。
#続く
【Effective Javaを読む】 第3章 項目12 『Comparableの実装を検討する』
https://qiita.com/Natsukii/items/1942f7f41ac39b914591