Como posso converter um Java CharSequence
em um String
?
java
string
charsequence
Belgi
fonte
fonte
setText(CharSequence)
não faz o que você precisa?Há uma questão sutil aqui que é um pouco difícil.
O
toString()
método possui uma implementação básica emObject
.CharSequence
é uma interface; e embora otoString()
método apareça como parte dessa interface, não há nada em tempo de compilação que forçará você a substituí-lo e respeitar as restrições adicionais que oCharSequence
toString()
javadoc do método impõe aotoString()
método; ou seja, ele deve retornar uma sequência contendo os caracteres na ordem retornada porcharAt()
.Seu IDE nem ajudará você, lembrando que você provavelmente deve substituir
toString()
. Por exemplo, em intellij, é isso que você verá se criar uma novaCharSequence
implementação: http://puu.sh/2w1RJ . Observe a ausência detoString()
.Se você confiar em
toString()
um arbitrárioCharSequence
, ele deverá funcionar, desde que oCharSequence
implementador tenha feito seu trabalho corretamente. Mas se você quiser evitar qualquer incerteza por completo, você deve usar umStringBuilder
eappend()
, assim:fonte
CharSequence
interface define explicitamentetoString()
- o implementador não terá perdido isso. O javadoc declara "Retorna uma string contendo os caracteres nesta sequência na mesma ordem que esta sequência. O comprimento da string será o comprimento dessa sequência" desde o início em 1.4 . As pessoas, por favor, verifique o que você upvoteStringBuilder
pode falhar em fazer o que você espera. O mesmo vale para qualquer outra interface, comoList
ouSet
, em particular seus métodosequals()
ehashCode()
que serão compilados sem substituições, mas devem ser substituídos de acordo com o contrato.Você pode usar diretamente String.valueOf ()
Embora seja o mesmo
toString()
que faz uma verificação nulacharSequence
antes de realmente chamar toString.Isso é útil quando um método pode retornar um
charSequence
ounull
valor.fonte
charSequence
for nulo, a sequência retornada será"null"
e nãonull
.