Java に変換String
する方法CharSequence
?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
Java に変換String
する方法CharSequence
?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
回答:
String
IS-A 以降CharSequence
、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
。
それが役に立てば幸い。
CharSequence
へのString
明示的なキャストなし。
String
しますCharSequence
。
CharSequence
。これは単にのインスタンスを代入String
しCharSequence
、変数、及びのでString
実装CharSequence
インタフェース、コード作品。
正解:
String s = "Hello World!";
// String => CharSequence conversion:
CharSequence cs = s; // String is already a CharSequence
CharSequence
はインターフェースであり、String
クラスはを実装しCharSequence
ます。
CharSequenceはインターフェースであり、StringはStringBuilder、StringBuffer、および他の多くの実装以外の実装の1つです。
したがって、と同じようにInterfaceName i = new ItsImplementation()
、CharSequence cs = new String("string")
または単にCharSequence cs = "string";
使用できます
CharSequence[] cs = String[] {"String to CharSequence"};
私自身のトラブルを投稿することにより、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と同様の問題に遭遇した他の人は、エラーメッセージを非常に綿密に解析し、他にどのような型変換が関係しているのかを確認する必要があります。