Wie konvertiert man String
auf CharSequence
in Java?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
Wie konvertiert man String
auf CharSequence
in Java?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
Antworten:
Da String
IS-A CharSequence
können Sie einen Pass , String
wo Sie ein benötigen CharSequence
, oder zuordnen String
zu a CharSequence
:
CharSequence cs = "string";
String s = cs.toString();
foo(s); // prints "string"
public void foo(CharSequence cs) {
System.out.println(cs);
}
Wenn Sie einen konvertieren CharSequence
zu ein String
, sondern nur die Verwendung toString
Methode , die von jeder konkreten Umsetzung umgesetzt werden muß CharSequence
.
Ich hoffe es hilft.
CharSequence
a String
ohne explizite Besetzung nicht einem zuweisen können .
String
einem a zuweisen CharSequence
.
CharSequence
. Es weist einer Variablen einfach eine Instanz von String
zu CharSequence
, und da String
die CharSequence
Schnittstelle implementiert wird, funktioniert der Code.
Klare Antwort:
String s = "Hello World!";
// String => CharSequence conversion:
CharSequence cs = s; // String is already a CharSequence
CharSequence
ist eine Schnittstelle, und die String
Klasse implementiert CharSequence
.
CharSequence ist eine Schnittstelle und String ist eine der anderen Implementierungen als StringBuilder, StringBuffer und viele andere.
So, wie Sie verwenden InterfaceName i = new ItsImplementation()
, können Sie verwenden CharSequence cs = new String("string")
oder einfachCharSequence cs = "string";
Sie können verwenden
CharSequence[] cs = String[] {"String to CharSequence"};
Der Versuch, einen (möglichen) Kontext für die Frage von OP bereitzustellen, indem ich meine eigenen Probleme poste. Ich arbeite in Scala, aber die Fehlermeldungen erhalten alle Referenz-Java-Typen, und die Fehlermeldung liest sich ähnlich wie der Compiler, der sich darüber beschwert, dass CharSequence kein String ist. Ich habe im Quellcode bestätigt, dass String die CharSequence-Schnittstelle implementiert, aber die Fehlermeldung macht auf den Unterschied zwischen String und CharSequence aufmerksam, während die eigentliche Ursache des Problems ausgeblendet wird:
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)
Ich konnte dieses Problem mit der Erkenntnis beheben, dass das Problem nicht String / CharSequence war, sondern eine Nichtübereinstimmung zwischen java.lang.Iterable und Scalas integriertem Iterable.
scala> val header = String.join(",", coll: _*)
header: String = Item,a,b
Mein spezielles Problem kann auch über die Antworten bei Scala gelöst werden : Verbinden Sie eine Iterable von Zeichenfolgen
Zusammenfassend sollte OP und andere, die auf ähnliche Probleme stoßen, die Fehlermeldungen sehr genau analysieren und sehen, welche anderen Typkonvertierungen beteiligt sein könnten.