Risposte:
Invocando il suo toString()
metodo.
Restituisce una stringa contenente i caratteri in questa sequenza nello stesso ordine di questa sequenza. La lunghezza della stringa sarà la lunghezza di questa sequenza.
C'è un problema sottile qui che è un po 'un gotcha.
Il toString()
metodo ha un'implementazione di base in Object
. CharSequence
è un'interfaccia; e sebbene il toString()
metodo appaia come parte di quell'interfaccia, non c'è nulla in fase di compilazione che ti costringerà a sovrascriverlo e onorare i vincoli aggiuntivi che il CharSequence
toString()
javadoc del metodo pone sul toString()
metodo; cioè che dovrebbe restituire una stringa contenente i caratteri nell'ordine restituito da charAt()
.
Il tuo IDE non ti aiuterà nemmeno ricordandoti che probabilmente dovresti scavalcare toString()
. Ad esempio, in Intellij, questo è ciò che vedrai se crei una nuova CharSequence
implementazione: http://puu.sh/2w1RJ . Si noti l'assenza di toString()
.
Se si fa affidamento su toString()
un arbitrario CharSequence
, dovrebbe funzionare a condizione che l' CharSequence
implementatore abbia svolto correttamente il proprio lavoro. Ma se vuoi evitare qualsiasi incertezza, dovresti usare un StringBuilder
e append()
, in questo modo:
final StringBuilder sb = new StringBuilder(charSequence.length());
sb.append(charSequence);
return sb.toString();
CharSequence
interfaccia definisce esplicitamente toString()
: l' implementatore non lo avrà perso. Il javadoc afferma "Restituisce una stringa contenente i caratteri in questa sequenza nello stesso ordine di questa sequenza. La lunghezza della stringa sarà la lunghezza di questa sequenza" sin dall'inizio in 1.4 . Gente, per favore verificate cosa avete
StringBuilder
potrebbe non riuscire a fare ciò che ti aspetti. Lo stesso vale per qualsiasi altra interfaccia, come List
o Set
, in particolare, i loro equals()
e hashCode()
metodi che verranno compilati senza override, ma devono essere sostituiti in base al contratto.
Puoi usare direttamente String.valueOf ()
String.valueOf(charSequence)
Anche se questo è lo stesso come toString()
fa un controllo nullo sul charSequence
prima di chiamare effettivamente a String.
Ciò è utile quando un metodo può restituire un valore charSequence
o null
.
charSequence
è null, la stringa restituita sarà "null"
e non null
.
setText(CharSequence)
non fa quello che ti serve?