¿Cómo puedo convertir un Java CharSequence
a un String
?
java
string
charsequence
Belgi
fuente
fuente
setText(CharSequence)
no hacen lo que necesita?Aquí hay un problema sutil que es un poco un problema.
El
toString()
método tiene una implementación base enObject
.CharSequence
es una interfaz; y aunque eltoString()
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 elCharSequence
toString()
javadoc del método aplica altoString()
método; es decir, debe devolver una cadena que contenga los caracteres en el orden devuelto porcharAt()
.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 nuevaCharSequence
implementación: http://puu.sh/2w1RJ . Tenga en cuenta la ausencia detoString()
.Si confía en
toString()
un arbitrarioCharSequence
, debería funcionar siempre que elCharSequence
implementador haya hecho su trabajo correctamente. Pero si desea evitar cualquier incertidumbre por completo, debe usar unStringBuilder
yappend()
, así:fuente
CharSequence
interfaz define explícitamentetoString()
: 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 comoList
oSet
, en particular, suequals()
yhashCode()
métodos que se compilará sin sustituciones de, pero debe ser anulado de acuerdo con el contrato.Puede usar directamente String.valueOf ()
Aunque esto es lo mismo, ya
toString()
que hace una comprobación nulacharSequence
antes de llamar a toString.Esto es útil cuando un método puede devolver un valor
charSequence
onull
.fuente
charSequence
es nulo, la cadena devuelta será"null"
y nonull
.