Comment puis-je convertir un Java CharSequence
en un String
?
java
string
charsequence
Belgi
la source
la source
setText(CharSequence)
ne fait-il pas ce dont vous avez besoin?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 dansObject
.CharSequence
est une interface; et bien que latoString()
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 queCharSequence
toString()
javadoc de latoString()
méthode impose à la méthode; c'est-à-dire qu'il doit retourner une chaîne contenant les caractères dans l'ordre retourné parcharAt()
.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 nouvelleCharSequence
implémentation: http://puu.sh/2w1RJ . Notez l'absence detoString()
.Si vous comptez sur
toString()
un arbitraireCharSequence
, cela devrait fonctionner à condition que l'CharSequence
implémenteur ait fait son travail correctement. Mais si vous voulez éviter toute incertitude, vous devez utiliser unStringBuilder
etappend()
, comme ceci:la source
CharSequence
interface définit explicitementtoString()
- 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 votezStringBuilder
pourrait tout aussi bien ne pas faire ce que vous attendez. Il en va de même pour toute autre interface, telle queList
ouSet
, en particulier leurequals()
et leshashCode()
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 ()
Bien que cela soit le même que
toString()
pour une vérification nulle surcharSequence
avant d'appeler réellement toString.Ceci est utile lorsqu'une méthode peut renvoyer une valeur
charSequence
ounull
.la source
charSequence
est nul alors la chaîne retournée sera"null"
et nonnull
.