Jawaban:
Dengan memohon toString()
metodenya.
Mengembalikan string yang berisi karakter dalam urutan ini dalam urutan yang sama dengan urutan ini. Panjang string akan menjadi panjang urutan ini.
Ada masalah halus di sini yang sedikit paham.
The toString()
metode memiliki implementasi basis di Object
. CharSequence
adalah sebuah antarmuka; dan meskipun toString()
metode ini muncul sebagai bagian dari antarmuka itu, tidak ada pada saat kompilasi yang akan memaksa Anda untuk menimpanya dan menghormati batasan tambahan yang CharSequence
toString()
ditempatkan oleh toString()
metode javadoc pada metode tersebut; yaitu bahwa ia harus mengembalikan string yang berisi karakter dalam urutan yang dikembalikan oleh charAt()
.
IDE Anda bahkan tidak akan membantu Anda dengan mengingatkan bahwa Anda mungkin harus menimpanya toString()
. Misalnya, di intellij, ini yang akan Anda lihat jika Anda membuat CharSequence
implementasi baru : http://puu.sh/2w1RJ . Perhatikan tidak adanyatoString()
.
Jika Anda mengandalkan toString()
sewenang-wenang CharSequence
, itu akan berhasil asalkan CharSequence
pelaksana melakukan pekerjaan mereka dengan benar. Tetapi jika Anda ingin menghindari ketidakpastian sama sekali, Anda harus menggunakan a StringBuilder
dan append()
, seperti:
final StringBuilder sb = new StringBuilder(charSequence.length());
sb.append(charSequence);
return sb.toString();
CharSequence
Antarmuka secara eksplisit menentukan toString()
- implementor tidak akan melewatkan ini. The javadoc negara "Mengembalikan sebuah string yang berisi karakter dalam urutan ini dalam urutan yang sama seperti urutan ini. Panjang string akan menjadi panjang urutan ini" sejak awal di 1,4 . Teman-teman, harap verifikasi apa yang Anda
StringBuilder
bisa gagal melakukan apa yang Anda harapkan. Hal yang sama berlaku untuk antarmuka lain, seperti List
atau Set
, khususnya metode equals()
dan hashCode()
metode yang akan dikompilasi tanpa penggantian, tetapi harus diganti sesuai dengan kontrak.
Anda dapat langsung menggunakan String.valueOf ()
String.valueOf(charSequence)
Meskipun ini sama dengan toString()
melakukan pemeriksaan nol pada charSequence
sebelum benar-benar memanggil toString.
Ini berguna ketika suatu metode dapat mengembalikan nilai charSequence
atau a null
.
charSequence
null maka string yang dikembalikan akan "null"
dan tidak null
.
setText(CharSequence)
tidak melakukan apa yang Anda butuhkan?