2009-09-08 8 views
204

Comment faire pour convertir String en CharSequence en Java?Comment convertir une chaîne en CharSequence?

+12

La question est une sorte de non sensical. Convertir un String en un CharSequence, c'est comme convertir une flûte en un instrument de musique. Une chaîne est déjà une CharSequence. La classe String implémente l'interface CharSequence. –

+2

La confusion du PO pourrait provenir de ne pas savoir ce que cela signifie de [programmer vers une interface] (http://stackoverflow.com/questions/383947/what-does-it-mean-to-program-to-an-interface) – Raedwald

+7

@JeffScottBrown la question a vraiment du sens, c'est une merveille légitime pour quiconque lisant le doc Android ou Java et manquant le détail que CharSequence n'est pas une classe. Votre commentaire m'a aidé, mais si la question n'avait pas été formulée telle qu'elle est, je ne l'aurais pas trouvée et j'aurais passé plus de temps à chercher une réponse que cela en valait la peine;) – Kheldar

Répondre

235

Depuis StringIS-ACharSequence, vous pouvez passer un String partout où vous avez besoin d'un 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 à un String, il suffit d'utiliser la méthode toString qui doit être implémentée par chaque implémentation concrète de CharSequence.

Espérons que ça aide.

+13

Sauf que vous ne pouvez pas assigner un' CharSequence' à un 'String' sans une distribution explicite. – gustafc

+1

Correction de l'exemple, merci. Je voulais dire l'inverse, c'est-à-dire assigner un 'String' à un' CharSequence'. –

+1

Je suis confus par ce code "CharSequence cs =" string ";". Comment pouvons-nous instancier une CharSequence? N'est-ce pas une interface? (Désolé, j'apprends toujours Java). – Mugen

34

réponse directe:

String s = "Hello World!"; 

// String => CharSequence conversion: 

CharSequence cs = s; // String is already a CharSequence 

CharSequence est une interface, et la classe String implémente CharSequence.

3

Vous pouvez utiliser

CharSequence[] cs = String[] {"String to CharSequence"}; 
+7

Bienvenue dans Stack Overflow Lucas. Veuillez fournir plus d'explications qu'un extrait de code. Cela peut être évident pour nous, mais aider les autres à savoir pourquoi ce code répond à la question. –

+0

Envelopper une chaîne dans un tableau n'aide pas à faire un point que String est une CharSequence (et par conséquent ce tableau de CharSequence est un tableau de String). – tishma

+0

CharSequence [] cs = new CharSequence [] {"Chaîne à CharSequence"}; –

9

CharSequence est une interface et chaîne est l'une des réalisations autres que StringBuilder, StringBuffer et beaucoup d'autres.

Alors, comme vous utilisez InterfaceName i = new ItsImplementation(), vous pouvez utiliser CharSequence cs = new String("string") ou simplement CharSequence cs = "string";

Questions connexes