Comment convertir String
en CharSequence
en Java?
Depuis String
IS-A CharSequence
, vous pouvez passer une String
partout où vous avez besoin d'une CharSequence
ou affecter une String
à une 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 une CharSequence
en une String
, utilisez simplement la méthode toString
qui doit être implémentée par chaque implémentation concrète de CharSequence
.
J'espère que ça aide.
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
class 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 simplement CharSequence cs = "string";
Vous pouvez utiliser
CharSequence[] cs = String[] {"String to CharSequence"};
Tenter de fournir un contexte (possible) à la question de OP en publiant mon propre problème. Je travaille dans Scala, mais les messages d'erreur m'indiquent tous les types Java de référence et le message d'erreur se lit beaucoup comme le compilateur se plaignant que CharSequence est non une chaîne. J'ai confirmé dans le code source que String implémentait l'interface CharSequence, mais le message d'erreur attire l'attention sur la différence entre String et CharSequence tout en masquant la source réelle 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 qu'il ne s'agissait pas de String/CharSequence, mais plutôt d'un décalage entre Java.lang.Iterable et le composant intégré de Scala, Iterable.
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: rejoindre un itérable de chaînes
En résumé, OP et les autres utilisateurs rencontrant des problèmes similaires doivent analyser les messages d'erreur de très près et voir quels types de conversions pourraient être impliqués.