Respuestas:
Invocando su toString()
método.
Devuelve una cadena que contiene los caracteres en esta secuencia en el mismo orden que esta secuencia. La longitud de la cadena será la longitud de esta secuencia.
Aquí hay un problema sutil que es un poco un problema.
El toString()
método tiene una implementación base en Object
. CharSequence
es una interfaz; y aunque el toString()
método aparece como parte de esa interfaz, no hay nada en tiempo de compilación que lo obligará a anularlo y respetar las restricciones adicionales que el CharSequence
toString()
javadoc del método aplica al toString()
método; es decir, debe devolver una cadena que contenga los caracteres en el orden devuelto por charAt()
.
Su IDE ni siquiera lo ayudará al recordarle que probablemente debería anularlo toString()
. Por ejemplo, en intellij, esto es lo que verá si crea una nueva CharSequence
implementación: http://puu.sh/2w1RJ . Tenga en cuenta la ausencia de toString()
.
Si confía en toString()
un arbitrario CharSequence
, debería funcionar siempre que el CharSequence
implementador haya hecho su trabajo correctamente. Pero si desea evitar cualquier incertidumbre por completo, debe usar un StringBuilder
y append()
, así:
final StringBuilder sb = new StringBuilder(charSequence.length());
sb.append(charSequence);
return sb.toString();
CharSequence
interfaz define explícitamente toString()
: el implementador no se lo habrá perdido. El javadoc dice "Devuelve una cadena que contiene los caracteres de esta secuencia en el mismo orden que esta secuencia. La longitud de la cadena será la longitud de esta secuencia" desde el inicio en 1.4 . Gente, verifique lo que votó
StringBuilder
podría fallar en hacer lo que espera. Lo mismo ocurre con cualquier otra interfaz, tal como List
o Set
, en particular, su equals()
y hashCode()
métodos que se compilará sin sustituciones de, pero debe ser anulado de acuerdo con el contrato.
Puede usar directamente String.valueOf ()
String.valueOf(charSequence)
Aunque esto es lo mismo, ya toString()
que hace una comprobación nula charSequence
antes de llamar a toString.
Esto es útil cuando un método puede devolver un valor charSequence
o null
.
charSequence
es nulo, la cadena devuelta será "null"
y no null
.
setText(CharSequence)
no hacen lo que necesita?