web-dev-qa-db-ja.com

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

JavaでStringCharSequenceに変換する方法

237
BurningIce

StringIS-ACharSequenceなので、Stringが必要な場合はいつでもCharSequenceを渡すことができます。またはStringCharSequenceに割り当てることもできます。

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

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

CharSequenceStringに変換したい場合は、toStringの具体的な実装ごとに実装する必要があるCharSequenceメソッドを使用してください。

それが役に立てば幸い。

249
João Silva

正解:

String s = "Hello World!";

// String => CharSequence conversion:

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

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

50
icza

CharSequenceはインターフェースであり、StringはStringBuilder、StringBuffer、その他多数の実装以外の実装です。

そのため、InterfaceName i = new ItsImplementation()を使用するのと同じように、CharSequence cs = new String("string")または単にCharSequence cs = "string";を使用できます。

11
krmanish007

あなたが使用することができます

CharSequence[] cs = String[] {"String to CharSequence"};
3
Lucas Fialho

私自身のトラブルを投稿することによって、OPの質問に何らかの(可能性のある)文脈を提供しようとしています。私はScalaで作業していますが、エラーメッセージはすべてJava型を参照しています。エラーメッセージは、CharSequenceがnotaであると文句を言うコンパイラによく似ています。文字列私は、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や他の人たちは、エラーメッセージを非常に綿密に解析し、他のどの型変換が関係しているのかを確かめるべきです。

0
Sarah Messer