web-dev-qa-db-fra.com

Comment convertir une chaîne en CharSequence?

Comment convertir String en CharSequence en Java?

231
BurningIce

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.

246
João Silva

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.

45
icza

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";

11
krmanish007

Vous pouvez utiliser 

CharSequence[] cs = String[] {"String to CharSequence"};
3
Lucas Fialho

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.

0
Sarah Messer