Réponses:
En invoquant sa toString()
méthode.
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 ici qui est un peu un piège.
La toString()
méthode a une implémentation de base dans Object
. CharSequence
est une interface; et bien que la toString()
méthode apparaisse dans le cadre de cette interface, rien au moment de la compilation ne vous obligera à la remplacer et à respecter les contraintes supplémentaires que CharSequence
toString()
javadoc de la toString()
méthode impose à la méthode; c'est-à-dire qu'il doit retourner 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 passer outre toString()
. Par exemple, dans intellij, c'est ce que vous verrez si vous créez une nouvelle CharSequence
implémentation: http://puu.sh/2w1RJ . Notez l'absence detoString()
.
Si vous comptez sur toString()
un arbitraire CharSequence
, cela devrait fonctionner à condition que l' CharSequence
implémenteur ait fait son travail correctement. Mais si vous voulez éviter toute incertitude, vous devez utiliser un StringBuilder
et append()
, comme ceci:
final StringBuilder sb = new StringBuilder(charSequence.length());
sb.append(charSequence);
return sb.toString();
CharSequence
interface définit explicitement toString()
- l' implémenteur ne l'aura pas manqué. Le javadoc déclare "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" depuis sa création en 1.4 . Les gens, veuillez vérifier ce que vous votez
StringBuilder
pourrait tout aussi bien ne pas faire ce que vous attendez. Il en va de même pour toute autre interface, telle que List
ou Set
, en particulier leur equals()
et les hashCode()
méthodes qui seront compilées sans dérogation, mais qui doivent être remplacées conformément au contrat.
Vous pouvez directement utiliser String.valueOf ()
String.valueOf(charSequence)
Bien que cela soit le même que toString()
pour une vérification nulle sur charSequence
avant d'appeler réellement toString.
Ceci est utile lorsqu'une méthode peut renvoyer une valeur charSequence
ou null
.
charSequence
est nul alors la chaîne retournée sera "null"
et non null
.
setText(CharSequence)
ne fait-il pas ce dont vous avez besoin?