The HIRO Says

If you smell what The HIRO is cooking!!!

toString() メソッド

Java をさわったことがある人ならば必ず実装したことがあるはず、toString() メソッドについて記述します。


toString() メソッドのデフォルト実装

特に toString() をオーバーライドしないでオブジェクトを標準出力すると、よく "Order@163b91" とか出力されますが、

  1. @ の前はクラス名
  2. @ の後は hashCode() の16進数表記

だそうです。


toString() メソッドの規約

規約としては、「簡潔かつ人間が読みやすい情報を出力すること!」となっています。
要は、ユーザや開発者が読みやすいフォーマットであれば、特に書式は問わない、ということです。
(よく”[value1=A,value2=B]”の書式を目にしますが、これは必須ではないそうです。ただ開発者的には使いやすいですよね。)


Effective Java にあった注意事項

  1. toString() メソッドは必ずオーバーライドすること。(確かに hashCode を出されても困りますものね。)
  2. 書式を決めたら、それを必ず javadoc コメントにして公開・周知させること。(仕様の公開ということですね。)
  3. 一旦書式を決めて公開したら、書式を変えないこと。(書式に依存したコードがあったら、全部影響してしまいます。)