Comment convertir un Java CharSequence
en String
?
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.
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 CharSequence
toString()
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();
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
.