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 CharSequenceimplementazione: 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' CharSequenceimplementatore abbia svolto correttamente il proprio lavoro. Ma se vuoi evitare qualsiasi incertezza, dovresti usare un StringBuildere append(), in questo modo:
final StringBuilder sb = new StringBuilder(charSequence.length());
sb.append(charSequence);
return sb.toString();
CharSequenceinterfaccia 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
StringBuilderpotrebbe non riuscire a fare ciò che ti aspetti. Lo stesso vale per qualsiasi altra interfaccia, come Listo 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 charSequenceprima di chiamare effettivamente a String.
Ciò è utile quando un metodo può restituire un valore charSequenceo null.
charSequenceè null, la stringa restituita sarà "null"e non null.
setText(CharSequence)non fa quello che ti serve?