Wie konvertiert man Stringauf CharSequencein 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 Stringauf CharSequencein 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 , Stringwo Sie ein benötigen CharSequence, oder zuordnen Stringzu 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 CharSequencezu ein String, sondern nur die Verwendung toStringMethode , die von jeder konkreten Umsetzung umgesetzt werden muß CharSequence.
Ich hoffe es hilft.
CharSequencea Stringohne explizite Besetzung nicht einem zuweisen können .
Stringeinem a zuweisen CharSequence.
CharSequence. Es weist einer Variablen einfach eine Instanz von Stringzu CharSequence, und da Stringdie CharSequenceSchnittstelle implementiert wird, funktioniert der Code.
Klare Antwort:
String s = "Hello World!";
// String => CharSequence conversion:
CharSequence cs = s; // String is already a CharSequence
CharSequenceist eine Schnittstelle, und die StringKlasse 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.