質問: javaのインターフェースにおいて、String toString(); の記述がでてきますが、書く意味はあるのでしょうか? ``` public interface AppendableCharSequence { public char charAt(int index); public int length(); public AppendableCharSequence append(char c); public String toString(); } ``` このインタフェースをimplementsしたときにtoString()以外のメソッドは実装しなければいけないのは分かるのですが、toString()はインターフェースに書かなくても、実装先ですでに自動で呼ばれているので、書かなくてもいい気がするのですが、書かないと何かまずいことが起こることがあるのでしょうか?よろしくお願いします。
回答: 「ほぼない」と感じます 意味合いとしてはinterface上にtoString()メソッドを前提としたdefaultメソッドの実装があったりする場合に必要かも知れないと感じるのですが、実際はJavaでinterfaceをimplementsできるのは参照クラスだけであり必ずObjectの派生になるためか、以下のようなコードを書いてもエラーになりません。 ``` interface Foo { default String getSomething() { return toString(); } } ``` ただ、このインターフェースの実装クラスに向けて「toString()をちゃんとオーバーライドしないと意図したとおりの結果にならないんだけど・・・」という意図でtoStringの宣言に対してJavaDocで「このインターフェースを実装するクラスではtoStringをこうしなければならない」と記述するといったことはあるかも知れません。(例が適切か自信ないですが非チェック例外のthrows句を書いたりそれをJavaDocに明記することに近い感じがします) 回答してはみたもののちょっと自信がないので他の方の回答も拝見したいです・・・