91 votes

Comment convertir une chaîne de caractères en CharSequence ?

Comment convertir String en CharSequence en Java?

124voto

João Silva Points 36619

Depuis que String EST UN CharSequence, vous pouvez passer une String partout où vous avez besoin d'un CharSequence, ou assigner une String à un CharSequence:

CharSequence cs = "string";
String s = cs.toString();
foo(s); // imprime "string"

public void foo(CharSequence cs) { 
  System.out.println(cs);
}

Si vous voulez convertir un CharSequence en String, il suffit d'utiliser la méthode toString qui doit être implémentée par chaque réalisation concrète de CharSequence.

13voto

krmanish007 Points 1

CharSequence est une interface et String est l'une de ses implémentations autres que StringBuilder, StringBuffer et bien d'autres.

Donc, tout comme vous utilisez NomInterface i = new SonImplementation(), vous pouvez utiliser CharSequence cs = new String("chaîne") ou simplement CharSequence cs = "chaîne";

4voto

Lucas Fialho Points 57

Vous pouvez utiliser

CharSequence[] cs = String[] {"String en CharSequence"};

3voto

PAX Points 450

C'est une bonne question! Vous pourriez rencontrer des problèmes si vous invoquez une API qui utilise des génériques et que vous souhaitez attribuer ou retourner ce résultat avec un sous-type différent du type générique. Java 8 aide à transformer:

    List input = new LinkedList<>(Arrays.asList("a", "b", "c"));
    List result;

//    result = input; // <-- Incompatibilité de types : impossible de convertir de List en List
    result = input.stream().collect(Collectors.toList());

    System.out.println(result);

2voto

Sarah Messer Points 91

Tentative de fournir un peu de contexte possible à la question de l'OP en affichant mes propres problèmes. Je travaille en Scala, mais les messages d'erreur font tous référence à des types Java, et le message d'erreur ressemble beaucoup au compilateur se plaignant que CharSequence n'est pas une String. 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)
:13: error: méthode en surcharge valeur join avec les alternatives :
  (x$1: CharSequence,x$2: java.lang.Iterable[_ <: CharSequence])String 
  (x$1: CharSequence,x$2: CharSequence*)String
 ne peut pas être appliqué à (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 une incompatibilité entre java.lang.Iterable et l'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 sur Scala: join an iterable of strings

En résumé, l'OP et d'autres personnes confrontées à des problèmes similaires devraient analyser de très près les messages d'erreur et voir quelles autres conversions de type pourraient être impliquées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X