CharSequenceを文字列に変換する方法は?


回答:


339

そのtoString()メソッドを呼び出すことにより。

このシーケンスの文字をこのシーケンスと同じ順序で含む文字列を返します。文字列の長さは、このシーケンスの長さになります。


@TheOnlyAnil、呼び出しsetText(CharSequence)はあなたが必要とすることをしませんか?
マイクサミュエル

actionBarのタイトルをクリック可能にしたい。
TheOnlyAnil 2015年

@TheOnlyAnil、多分あなたはそれを質問として尋ねるべきです。接線方向に関連する質問への回答へのコメントは、要件を引き出すための良い場所ではありません。
Mike Samuel、

Stackoverflowでは質問を投稿できません。:/ところで、昨夜それをやった。カスタムアクションバーが解決策です:)
TheOnlyAnil

1
@WillByersの出力は、CharSequenceではなく、CharSequence配列のtoStringのように見えます。
マイクサミュエル

90

ここにはちょっとした落とし穴である微妙な問題があります。

この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();

9
間違いを犯したり、コードを悪化させたりするべきではありません。
Lodewijk 2013

9
新しいStringBuilder(charSequence).toString(); シングルライナーと同等です。
ガーボルLipták

22
この答えが間違っているCharSequenceインターフェースが明示的に定義するtoString()- 実装者がこれを見逃していることはありません。javadocツールの状態は「このシーケンスと同じ順序でこのシーケンス内の文字を含む文字列を返します。文字列の長さは、このシーケンスの長さになります」の創業以来1.4人々は、あなたがupvote何を確認してください
earcam

2
これはばかげています。実装者が契約に従うことを信頼しない場合、すべての賭けは無効になります。それをパラメーターとして渡すと、StringBuilder期待どおりに動作しない可能性があります。同じのような他のインターフェースについてもListまたはSet、特にそれらequals()hashCode()上書きせずにコンパイルされます方法が、しなければならない契約に応じて上書きすること。
shmosel

3
インターフェースがこれを行うという事実は、間違いなくその点で不十分な決定であり、私の答えは、これが人為的エラーが発生する通常の場所より簡単であることを強調しているだけです。
fragorl 2016

19

String.valueOf()を直接使用できます

String.valueOf(charSequence)

これは実際にtoStringを呼び出す前にtoString()nullをチェックするのと同じcharSequenceです。

これは、メソッドがcharSequenceまたはnull値を返すことができる場合に役立ちます。


8
これは実際に今日私を噛んだだけです。場合charSequenceはnullが返される文字列になります"null"し、ではありませんnull
ChrisThomas

ああ。理にかなっています。私はこの答えを削除します
Abhishek Batra 2018年

1
これはいくつかのケースに最適だと思います。
Shukant Pal
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.