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


265

Java に変換Stringする方法CharSequence


16
問題は一種の無意味なものです。文字列をCharSequenceに変換することは、フルートを楽器に変換することに似ています。StringはすでにCharSequenceです。StringクラスはCharSequenceインターフェースを実装します。
ジェフスコットブラウン


9
@JeffScottBrownこの質問は実際に理にかなっています。AndroidまたはJavaのドキュメントを読んでいて、CharSequenceがクラスではないという詳細を見逃している人にとっては、それは正当な疑問です。あなたのコメントは私を助けました、しかし質問がそうであるように書かれていなかったならば、私はそれを見つけられず、それが本当に価値があるよりも多くの時間をかけて答えを探していたでしょう;)
Kheldar

私はグルーヴィーな問題のコンテキストでこの質問に来ました: Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
BlackEye

@JeffScottBrownがコメントを書き直すように私がアドバイスする方法は次のとおりです-"StringクラスはCharSequenceインターフェースを実装(IS-A)するため、CharSequenceの代わりにStringを渡すことができます。フルートをフルートIS-A楽器による楽器」
Vighnesh

回答:


261

String IS-A 以降CharSequenceString必要な場所にを渡すCharSequenceか、Stringをに割り当てることができますCharSequence

CharSequence cs = "string";
String s = cs.toString();
foo(s); // prints "string"

public void foo(CharSequence cs) { 
  System.out.println(cs);
}

変換したい場合CharSequenceにはString、単に使用toStringのすべての具体的な実装で実装されなければならない方法をCharSequence

それが役に立てば幸い。


13
あなたが割り当てることができないことを除いCharSequenceへのString明示的なキャストなし。
gustafc 2009

1
例を修正しました、ありがとうございます。私はつまり、割り当て、他の方法で回避を意味StringしますCharSequence
ジョアン・シルバ

4
あなたは正しいです。それは確かにインターフェースです。ただし、そのコードはをインスタンス化しませんCharSequence。これは単にのインスタンスを代入StringCharSequence、変数、及びのでString実装CharSequenceインタフェース、コード作品。
ジョアン・シルバ

5
これは答えではありません。質問は文字列-> to-> CharSequenceです。答えは逆です。
トランテ2013年

3
これは両方に答えます。ポスターはまず、文字列がCharSequenceであることを説明することにより、文字列-> CharSequenceの問題を簡単に解決します。次に、ポスターはCharSequenceからStringへの移行方法について回答します。
Alex A.

62

正解:

String s = "Hello World!";

// String => CharSequence conversion:

CharSequence cs = s;  // String is already a CharSequence

CharSequenceはインターフェースであり、Stringクラスはを実装しCharSequenceます。


13

CharSequenceはインターフェースであり、StringはStringBuilder、StringBuffer、および他の多くの実装以外の実装の1つです。

したがって、と同じようにInterfaceName i = new ItsImplementation()CharSequence cs = new String("string")または単にCharSequence cs = "string";


3

使用できます

CharSequence[] cs = String[] {"String to CharSequence"};

8
Stack Overflow Lucasへようこそ。コードスニペットよりも詳しい説明を入力してください。それは私たちにとっては明白かもしれませんが、このコードが質問に答える理由を他の人に知らせるのを助けてください。
ジャン・レミーレヴィ

文字列を配列にラップしても、文字列がCharSequenceである(つまり、CharSequenceのその配列は文字列の配列である)ことはわかりません。
tishma

1
CharSequence [] cs = new CharSequence [] {"String to CharSequence"};
avez raj 2017

1

私自身のトラブルを投稿することにより、OPの質問にいくつかの(可能な)コンテキストを提供しようとしています。私はScalaで作業していますが、すべての参照Java型を取得しているエラーメッセージが表示され、エラーメッセージはコンパイラーがCharSequenceが文字列ではないと不平を言っているのとよく似ています。StringがCharSequenceインターフェースを実装していることをソースコードで確認しましたが、エラーメッセージは、問題の実際の原因を隠しながら、StringとCharSequenceの違いに注意を喚起します。

scala> cols
res8: Iterable[String] = List(Item, a, b)

scala> val header = String.join(",", cols)
<console>:13: error: overloaded method value join with alternatives:
  (x$1: CharSequence,x$2: java.lang.Iterable[_ <: CharSequence])String <and>
  (x$1: CharSequence,x$2: CharSequence*)String
 cannot be applied to (String, Iterable[String])
       val header = String.join(",", cols)

この問題はString / CharSequenceではなく、java.lang.IterableとScalaの組み込みIterableの不一致であるという認識で修正できました。

scala> val header = String.join(",", coll: _*)
header: String = Item,a,b

私の特定の問題は、Scalaの回答で解決することもできます。

要約すると、OPと同様の問題に遭遇した他の人は、エラーメッセージを非常に綿密に解析し、他にどのような型変換が関係しているのかを確認する必要があります。

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