Respostas:
Invocando seu toString()
método.
Retorna uma sequência que contém os caracteres nesta sequência na mesma ordem que esta sequência. O comprimento da string será o comprimento dessa sequência.
Há uma questão sutil aqui que é um pouco difícil.
O toString()
método possui uma implementação básica em Object
. CharSequence
é uma interface; e embora o toString()
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 o CharSequence
toString()
javadoc do método impõe ao toString()
método; ou seja, ele deve retornar uma sequência contendo os caracteres na ordem retornada por charAt()
.
Seu IDE nem ajudará você, lembrando que você provavelmente deve substituir toString()
. Por exemplo, em intellij, é isso que você verá se criar uma nova CharSequence
implementação: http://puu.sh/2w1RJ . Observe a ausência de toString()
.
Se você confiar em toString()
um arbitrário CharSequence
, ele deverá funcionar, desde que o CharSequence
implementador tenha feito seu trabalho corretamente. Mas se você quiser evitar qualquer incerteza por completo, você deve usar um StringBuilder
e append()
, assim:
final StringBuilder sb = new StringBuilder(charSequence.length());
sb.append(charSequence);
return sb.toString();
CharSequence
interface define explicitamente toString()
- 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ê upvote
StringBuilder
pode falhar em fazer o que você espera. O mesmo vale para qualquer outra interface, como List
ou Set
, em particular seus métodos equals()
e hashCode()
que serão compilados sem substituições, mas devem ser substituídos de acordo com o contrato.
Você pode usar diretamente String.valueOf ()
String.valueOf(charSequence)
Embora seja o mesmo toString()
que faz uma verificação nula charSequence
antes de realmente chamar toString.
Isso é útil quando um método pode retornar um charSequence
ou null
valor.
charSequence
for nulo, a sequência retornada será "null"
e não null
.
setText(CharSequence)
não faz o que você precisa?