Kaedah Java toString
toString
kaedah dalam Java digunakan untuk memberikan maklumat yang jelas dan mencukupi tentang objek ( Object
) dalam bentuk yang boleh dibaca manusia. Penggantian kaedah yang betul toString
boleh membantu dalam mengelog dan menyahpepijat program Java dengan menyediakan maklumat yang berharga dan penting. Memandangkan toString()
ia ditakrifkan dalam java.lang.Object
kelas dan pelaksanaan lalainya tidak memberikan banyak maklumat, ia sentiasa menjadi amalan terbaik untuk mengatasi kaedah ini dalam kelas keturunan. Malah, jika anda mencipta kelas penting atau umum type Order
, Trade
atau Employee
, sentiasa override equals , hashCode , compareTo dan toString
kaedah dalam Java. Secara lalai pelaksanaan toString
menghasilkan output dalam bentuk , package.class@hashCode
contohnya untuk contoh kami kaedah kelas akan mencetak ujian.Country@18e2b22 di mana 18e2b22 ialah kod cincang objek dalam perenambelasan, jika anda memanggil kaedah kod hash ia akan mengembalikan 260943370 iaitu perpuluhan bersamaan 18e2b22. Maklumat ini tidak berguna terutamanya apabila mencari masalah. Mari lihat contoh kehidupan sebenar di mana anda perlu mencari masalah dalam sambungan rangkaian anda, sekiranya anda ingin mengetahui hos dan port yang sistem anda cuba sambungkan dan jika atau hanya mencetak maklumat lalai, ia akan menjadi mustahil untuk membayangkan masalah sebenar, tetapi dengan pelaksanaan yang ditindih mereka boleh memberikan maklumat berguna seperti nama hos dan nombor port. Dalam tutorial Java ini kami akan memberikan beberapa petua tentang kaedah mengatasi dengan contoh kod. toString()
toString()
Country
Socket
ServerSocket
toString
toString
toString
Cara mengatasi kaedah toString dalam Java:
Mencetak tarikh yang diformatkan (iaitu hari/bulan/tahun) dan bukannya nilai mentah. Ini adalah petunjuk yang sangat berguna apabila mengatasi kaedah JavatoString
. toString()
Kelas biasa java.util.Date
tidak mengeluarkan tarikh yang diformatkan dan termasuk banyak butiran yang tidak selalu diperlukan. Jika anda menggunakan separa DateFormat i.e. dd-MM-yy dalam aplikasi anda, maka anda pasti mahu melihat format ini dan bukannya format lalai. IDE biasanya tidak menjana output berformat Date
dan ini adalah sesuatu yang anda perlu lakukan sendiri, tetapi ia berbaloi. Baca Cara Mencetak Tarikh dalam Format ddMMyy dalam Java untuk butiran tentang pemformatan Date
dalam Java. Anda juga boleh menggunakan kelas SimpleDataFormat atau pustaka masa Joda Date untuk ini.
Mendokumentasikan format toString
Jika kaedah andatoString()
tidak mengeluarkan data sebagai field=value, maka adalah idea yang baik untuk mendokumenkan format output toString
, terutamanya untuk objek penting seperti Pekerja atau Pelajar. Sebagai contoh, jika kaedah toString()
kelas Работник(Employee)
mencetak " John-101-Sales-9846387321 " maka amalan yang baik adalah untuk menentukan format sebagai "nama-id-jabatan-kenalan", tetapi pada masa yang sama tidak membenarkan pelanggan mendapatkan maklumat daripada kaedah toString()
, anda harus sentiasa menyediakan kaedah yang sesuai untuk mendapatkan semula data, seperti getName()
, getId()
, getContact()
dan sebagainya, memandangkan maklumat yang diperoleh daripada toString()
perwakilan objek adalah rapuh dan terdedah kepada ralat, jadi pelanggan harus sentiasa mempunyai laluan yang bersih untuk mendapatkan maklumat.
Gunakan StringBuilder untuk mengarang output toString()
Jika anda menulis kod untuk kaedahtoString()
dalam Java, kemudian gunakan StringBuilder untuk menambah atribut individu. Jika anda menggunakan IDE seperti Eclipse , Netbeans atau IntelliJ maka menggunakan StringBuilder
kaedah dan dan append()
bukannya operator + untuk mengarang toString
juga merupakan cara untuk pergi. Secara lalai, kedua-dua Eclipse dan Netbeans menjana toString
dengan pengendali penggabungan.
Menggunakan anotasi @Override
Menggunakan@Override
kaedah overriding dalam Java ialah salah satu amalan terbaik dalam bahasa tersebut. Tetapi pembayang ini tidak sepenting dalam kes mengatasi kaedah equals()
dan compareTo()
, kerana lebihan beban dan bukannya mengatasi boleh mencipta lebih banyak ralat halus yang sukar dikira. Walau apa pun, lebih baik menggunakan anotasi @Overrride
.
Mencetak kandungan tatasusunan dan bukannya mencetak objek tatasusunan
Tatasusunan ialah objek dalam Java tetapi ia tidak mengatasi kaedahtoString
dan apabila anda mencetak tatasusunan format output lalai tidak begitu berguna kerana kami ingin melihat kandungan tatasusunan. By the way, ini adalah satu lagi sebab mengapa tatasusunan char[] adalah lebih baik daripada String untuk menyimpan data sensitif seperti kata laluan. Luangkan masa untuk melihat sama ada mencetak kandungan tatasusunan membantu pelanggan anda atau tidak, dan jika ia masuk akal, kemudian cetak kandungan tatasusunan dan bukannya objek itu sendiri. Atas sebab prestasi, adalah lebih baik untuk menggunakan Collection
sebegitu ArrayList
atau HashSet sebaliknya Array
untuk menyimpan objek lain.
Petua bonus
Beberapa lagi petua bonus mengenai kaedah mengatasitoString
dalam Java.
-
Cetak output
toString
dalam berbilang baris atau dalam satu berdasarkan panjangnya. -
Sertakan nama kelas yang layak sepenuhnya dalam perwakilan
toString
, dengan kata lainpackage.class
untuk mengelakkan sebarang salah faham. -
Anda boleh melangkau nilai nol atau menunjukkannya, tetapi lebih baik untuk menunjukkannya. Kadangkala ia berguna kerana ia menunjukkan medan yang hadir
null
semasa beberapa kejadian, contohnya NullPointerException . -
Gunakan format nilai kunci, sebagai contoh
member.name=member.value
, kebanyakan IDE menyokong ini. -
Sertakan ahli yang diwarisi jika anda fikir mereka harus memberikan maklumat yang diperlukan kepada kelas yang mewarisi.
-
Kadangkala objek mengandungi banyak parameter pilihan dan diperlukan, seperti yang kami tunjukkan dalam contoh templat Builder kami , apabila hampir mustahil untuk mencetak semua medan, dalam kes ini kami boleh mencetak hanya medan yang diperlukan, terutamanya kerana kami mempunyai medan pilihan.
GO TO FULL VERSION