回答:
そのtoString()
メソッドを呼び出すことにより。
このシーケンスの文字をこのシーケンスと同じ順序で含む文字列を返します。文字列の長さは、このシーケンスの長さになります。
ここにはちょっとした落とし穴である微妙な問題があります。
このtoString()
メソッドはで基本実装されていObject
ます。CharSequence
インターフェースです。けれどもおよびtoString()
方法は、そのインタフェースの一部として表示され、あなたはそれを無効にするために強制的に追加の制約を尊重するコンパイル時には何もありませんそのCharSequence
toString()
上のメソッドのjavadocのプットtoString()
方法。つまり、によって返される順序で文字を含む文字列を返す必要があるということcharAt()
です。
IDEは、おそらくオーバーライドする必要があることを思い出させることで、あなたを助けてくれませんtoString()
。たとえば、intellijでは、新しいCharSequence
実装http://puu.sh/2w1RJを作成すると次のようになります。がないことに注意してくださいtoString()
。
あなたが依存している場合toString()
、任意にCharSequence
、それは必要があります提供する仕事CharSequence
実装を適切に仕事をしてくれました。しかし、不確実性を完全に回避したい場合は、次のようにa StringBuilder
とを使用する必要がありますappend()
。
final StringBuilder sb = new StringBuilder(charSequence.length());
sb.append(charSequence);
return sb.toString();
CharSequence
インターフェースが明示的に定義するtoString()
- 実装者がこれを見逃していることはありません。javadocツールの状態は「このシーケンスと同じ順序でこのシーケンス内の文字を含む文字列を返します。文字列の長さは、このシーケンスの長さになります」の創業以来1.4。 人々は、あなたがupvote何を確認してください
StringBuilder
期待どおりに動作しない可能性があります。同じのような他のインターフェースについてもList
またはSet
、特にそれらequals()
とhashCode()
上書きせずにコンパイルされます方法が、しなければならない契約に応じて上書きすること。
String.valueOf()を直接使用できます
String.valueOf(charSequence)
これは実際にtoStringを呼び出す前にtoString()
nullをチェックするのと同じcharSequence
です。
これは、メソッドがcharSequence
またはnull
値を返すことができる場合に役立ちます。
charSequence
はnullが返される文字列になります"null"
し、ではありませんnull
。
setText(CharSequence)
はあなたが必要とすることをしませんか?