JavaでString
をCharSequence
に変換する方法
String
IS-ACharSequence
なので、String
が必要な場合はいつでも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
メソッドを使用してください。
それが役に立てば幸い。
正解:
String s = "Hello World!";
// String => CharSequence conversion:
CharSequence cs = s; // String is already a CharSequence
CharSequence
はインターフェースで、 String
クラスはCharSequence
を実装しています。
CharSequenceはインターフェースであり、StringはStringBuilder、StringBuffer、その他多数の実装以外の実装です。
そのため、InterfaceName i = new ItsImplementation()
を使用するのと同じように、CharSequence cs = new String("string")
または単にCharSequence cs = "string";
を使用できます。
あなたが使用することができます
CharSequence[] cs = String[] {"String to CharSequence"};
私自身のトラブルを投稿することによって、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や他の人たちは、エラーメッセージを非常に綿密に解析し、他のどの型変換が関係しているのかを確かめるべきです。