web-dev-qa-db-fra.com

Comment convertir CharSequence en String?

Comment convertir un Java CharSequence en String?

179
Belgi

En appelant sa méthode toString() .

Renvoie une chaîne contenant les caractères de cette séquence dans le même ordre que cette séquence. La longueur de la chaîne sera la longueur de cette séquence.

316
Mike Samuel

Il y a un problème subtil qui est un peu un piège.

La méthode toString() a une implémentation de base dans Object. CharSequence est une interface; et bien que la méthode toString() apparaisse dans cette interface, rien au moment de la compilation ne vous oblige à la remplacer et à respecter les contraintes supplémentaires imposées par la méthode CharSequencetoString() de javadoc sur la méthode toString(); c'est-à-dire qu'il doit retourner une chaîne contenant les caractères dans l'ordre renvoyé par charAt().

Votre IDE ne vous aidera même pas en vous rappelant que vous devriez probablement remplacer toString(). Par exemple, dans intellij, voici ce que vous verrez si vous créez une nouvelle implémentation de CharSequence: http://puu.sh/2w1RJ . Notez l'absence de toString().

Si vous comptez sur toString() sur un CharSequence arbitraire, il devrait fonctionner à condition que l'implémentateur CharSequence fasse correctement son travail. Mais si vous voulez éviter toute incertitude, vous devez utiliser un StringBuilder et append(), comme suit:

final StringBuilder sb = new StringBuilder(charSequence.length());
sb.append(charSequence);
return sb.toString();
87
fragorl

Vous pouvez directement utiliser String.valueOf ()

String.valueOf(charSequence)

Bien que cela soit identique à toString(), il effectue un contrôle nul sur le charSequence avant d'appeler toString.

Ceci est utile lorsqu'une méthode peut renvoyer une valeur charSequence ou null.

14
Abhishek Batra