Comment convertir CharSequence en chaîne en Java?

Comment puis-je convertir un Java CharSequence pour un String?

153
demandé sur PearsonArtPhoto 2011-10-10 04:35:35

3 réponses

En invoquant son toString() Méthode.

Retourne 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.

285
répondu Mike Samuel 2011-10-10 00:38:05

Il y a un problème subtil ici qui est un peu un gotcha.

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 le cadre de cette interface, il n'y a rien au moment de la compilation qui vous forcera à la remplacer et à honorer les contraintes supplémentaires que la CharSequence toString() javadoc de la méthode met sur la méthode toString(); c'est-à-dire qu'il devrait renvoyer une chaîne contenant les caractères dans l'ordre retourné par charAt().

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

Si vous comptez sur toString() sur un CharSequencearbitraire, devrait fonctionner à condition que l'implémenteur CharSequence ait fait son travail correctement. Mais si vous voulez éviter toute incertitude, vous devriez utiliser un StringBuilder et append(), comme ceci:

final StringBuilder sb = new StringBuilder(charSequence.length());
sb.append(charSequence);
return sb.toString();
84
répondu fragorl 2015-12-01 20:00:29

Vous pouvez utiliser directement String.valueOf ()

String.valueOf(charSequence)

Bien que ce soit la même chose que toString() il effectue une vérification nulle sur le charSequence avant d'appeler ToString.

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

8
répondu Abhishek Batra 2017-12-27 11:59:35