Comment convertir String
à CharSequence
en Java?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
Comment convertir String
à CharSequence
en Java?
Exception groovy.lang.MissingMethodException: No signature of method: static java.util.regex.Pattern.matcher() is applicable for argument types: (java.lang.String)
Réponses:
Depuis String
IS-A CharSequence
, vous pouvez passer un String
partout où vous en avez besoin CharSequence
, ou affecter un String
à un CharSequence
:
CharSequence cs = "string";
String s = cs.toString();
foo(s); // prints "string"
public void foo(CharSequence cs) {
System.out.println(cs);
}
Si vous voulez convertir un CharSequence
en un String
, utilisez simplement la toString
méthode qui doit être implémentée par chaque implémentation concrète de CharSequence
.
J'espère que ça aide.
CharSequence
à un String
sans cast explicite.
String
à un CharSequence
.
CharSequence
. Il affecte simplement une instance de String
à une CharSequence
variable, et depuis String
implémente l' CharSequence
interface, le code fonctionne.
Réponse directe:
String s = "Hello World!";
// String => CharSequence conversion:
CharSequence cs = s; // String is already a CharSequence
CharSequence
est une interface et la String
classe implémente CharSequence
.
CharSequence est une interface et String est l'une des implémentations autres que StringBuilder, StringBuffer et bien d'autres.
Donc, tout comme vous utilisez InterfaceName i = new ItsImplementation()
, vous pouvez utiliser CharSequence cs = new String("string")
ou simplementCharSequence cs = "string";
Vous pouvez utiliser
CharSequence[] cs = String[] {"String to CharSequence"};
Tenter de fournir un contexte (possible) à la question de OP en signalant mes propres problèmes. Je travaille dans Scala, mais les messages d'erreur reçoivent tous les types Java de référence, et le message d'erreur ressemble beaucoup au compilateur se plaignant que CharSequence n'est pas une chaîne. J'ai confirmé dans le code source que String implémente l'interface CharSequence, mais le message d'erreur attire l'attention sur la différence entre String et CharSequence tout en cachant la véritable source du problème:
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)
J'ai pu résoudre ce problème en réalisant que le problème n'était pas String / CharSequence, mais plutôt un décalage entre java.lang.Iterable et Iterable intégré de Scala.
scala> val header = String.join(",", coll: _*)
header: String = Item,a,b
Mon problème particulier peut également être résolu via les réponses de Scala: rejoignez un itérable de chaînes
En résumé, OP et ceux qui rencontrent des problèmes similaires devraient analyser les messages d'erreur de très près et voir quels autres types de conversions pourraient être impliqués.