JavaRush /Blog Java /Random-MS /10 Petua untuk Mengatasi Kaedah toString() dalam Java (Ba...
Ku6ep
Tahap

10 Petua untuk Mengatasi Kaedah toString() dalam Java (Bahagian 1)

Diterbitkan dalam kumpulan
10 Petua untuk Mengatasi Kaedah toString() dalam Java - ToStringBuilder Netbeans Eclipse 10 Petua untuk Mengatasi Kaedah toString() dalam Java (Bahagian 1) - 1

Kaedah Java toString

toStringkaedah dalam Java digunakan untuk memberikan maklumat yang jelas dan mencukupi tentang objek ( Object) dalam bentuk yang boleh dibaca manusia. Penggantian kaedah yang betul toStringboleh membantu dalam mengelog dan menyahpepijat program Java dengan menyediakan maklumat yang berharga dan penting. Memandangkan toString()ia ditakrifkan dalam java.lang.Objectkelas 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, Tradeatau Employee, sentiasa override equals , hashCode , compareTo dan toStringkaedah dalam Java. Secara lalai pelaksanaan toStringmenghasilkan output dalam bentuk , package.class@hashCodecontohnya 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()CountrySocketServerSockettoStringtoStringtoString

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 Java toString. toString()Kelas biasa java.util.Datetidak 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 Datedan ini adalah sesuatu yang anda perlu lakukan sendiri, tetapi ia berbaloi. Baca Cara Mencetak Tarikh dalam Format ddMMyy dalam Java untuk butiran tentang pemformatan Datedalam Java. Anda juga boleh menggunakan kelas SimpleDataFormat atau pustaka masa Joda Date untuk ini.

Mendokumentasikan format toString

Jika kaedah anda toString()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 kaedah toString()dalam Java, kemudian gunakan StringBuilder untuk menambah atribut individu. Jika anda menggunakan IDE seperti Eclipse , Netbeans atau IntelliJ maka menggunakan StringBuilderkaedah dan dan append()bukannya operator + untuk mengarang toStringjuga merupakan cara untuk pergi. Secara lalai, kedua-dua Eclipse dan Netbeans menjana toStringdengan pengendali penggabungan.

Menggunakan anotasi @Override

Menggunakan @Overridekaedah 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 kaedah toStringdan 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 Collectionsebegitu ArrayListatau HashSet sebaliknya Arrayuntuk menyimpan objek lain.

Petua bonus

Beberapa lagi petua bonus mengenai kaedah mengatasi toStringdalam Java.
  1. Cetak output toStringdalam berbilang baris atau dalam satu berdasarkan panjangnya.

  2. Sertakan nama kelas yang layak sepenuhnya dalam perwakilan toString, dengan kata lain package.classuntuk mengelakkan sebarang salah faham.

  3. Anda boleh melangkau nilai nol atau menunjukkannya, tetapi lebih baik untuk menunjukkannya. Kadangkala ia berguna kerana ia menunjukkan medan yang hadir nullsemasa beberapa kejadian, contohnya NullPointerException .

  4. Gunakan format nilai kunci, sebagai contoh member.name=member.value, kebanyakan IDE menyokong ini.

  5. Sertakan ahli yang diwarisi jika anda fikir mereka harus memberikan maklumat yang diperlukan kepada kelas yang mewarisi.

  6. 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.

Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION