Object#toString
のデフォルト実装は下記のようになっています。
public String toString() {
return getClass().getName() + '@' + Integer.toHexString(hashCode());
}
つまり、下記のようなテキスト表現が返されます。
MyObject@39fd27ca
ただし、このデフォルト実装は、人にとって見やすく、記述的な表現になっていないため、toString
は常にオーバライドして、オブジェクトの保持する情報を適切なテキスト表現に加工して返すように実装する必要があります。
Android Developers のサイトでは、デバッグ用途であれば、例えば下記のように実装しておけばよいという指針が示されています。
@Override public String toString() {
return getClass().getName() + "[" +
"primitiveField=" + primitiveField + ", " +
"referenceField=" + referenceField + ", " +
"arrayField=" + Arrays.toString(arrayField) + "]";
}
toString
メソッドの Javadoc コメントを記述するときに、どのようなテキストが返されるかの例を含めると親切です。
ただし、toString
が返すテキストのフォーマットは、オブジェクトのフィールドが追加/削除されるごとに変化するので、それはあくまで例であって、フォーマットは変更される可能性があること、パースして情報を抽出したりしないこと、などを記載しておくのがよいでしょう。