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 2)

Diterbitkan dalam kumpulan

toString contoh dalam Java

Kami akan menggunakan kelas berikut untuk menunjukkan contoh toString kami untuk utiliti Netbeans, Eclipse dan Apache ToStringBuilder.

/** * Java программа, демонстрирующая How переопределить метод toString() в Java. * Эта Java программа показывает How вы можете использовать IDE типа Netbeans or Eclipse * и открытую библиотеку типа Apache commons ToStringBuilder для * переопределения toString в Java. * @author Javarevisited.blogspot.com */ public class Country { private String name; private String capital; private long population; private Date independenceDay; public Country(String name){ this.name = name; } public String getName(){ return name; } public void setName(String name) {this.name = name;} public String getCapital() {return capital;} public void setCapital(String capital) {this.capital = capital;} public Date getIndependenceDay() {return independenceDay;} public void setIndependenceDay(Date independenceDay) {this.independenceDay = independenceDay;} public long getPopulation() { return population; } public void setPopulation(long population) {this.population = population; } @Override public String toString() { return "Country{" + "capital=" + capital + ", population=" + population + ", independenceDay=" + independenceDay + '}'; } public void setIndependenceDay(String date) { DateFormat format = new SimpleDateFormat("dd/MM/yyyy"); try { this.independenceDay = format.parse(date); } catch (ParseException ex) { Logger.getLogger(Country.class.getName()).log(Level.SEVERE, null, ex); } } public static void main(String args[]) { Country India = new Country("India"); India.setCapital("New Delhi"); India.setIndependenceDay("15/07/1947"); India.setPopulation(1200000000); System.out.println(India); } }

Kaedah toString dicipta oleh Netbeans IDE


Kaedah toString yang dijana oleh Netbeans IDE menghasilkan output berikut untuk kelas yang ditakrifkan di atas:

Country{capital=New Delhi, population=1200000000, independenceDay=Fri Aug 15 00:00:00 VET 1947}

Jika anda melihat output di atas, anda akan melihat bahawa Netbeans tidak mencipta tarikh terformat untuk anda: sebaliknya, ia memanggil kaedah toString() kelas java.util.Date

Kaedah toString() dicipta oleh Rclise IDE


Secara lalai, Eclipse mencipta kaedah toString berikut:

@Override public String toString() { return "Country [name=" + name + ", capital=" + capital + ", population=" + population + ", independenceDay=" + independenceDay + "]"; }

Anda boleh menjana kod untuk kaedah toString dalam Eclipse dengan mengklik pada Source --> Generate toString(). Ia juga menyediakan beberapa kemungkinan, seperti memilih gaya kod, iaitu, menggunakan operan gabungan atau StringBuilder dan sebagainya. Di bawah ialah output kaedah toString() yang baru kami buat dalam Eclipse:

Country [name=India, capital=New Delhi, population=1200000000, independenceDay=Tue Jul 15 00:00:00 VET 1947]

Menggunakan ToStringBuilder untuk Mengatasi Kaedah toString() Java

Bersama dengan banyak kelas berguna seperti PropertyUtils , EqualsBuilder atau HashCodeBuilder, Apache juga menyediakan ToStringBuilder yang boleh menjana kod untuk mengeluarkan kaedah toString() dalam beberapa gaya berbeza. Mari lihat rupa output kaedah toString dalam gaya ringkas dan berbilang baris: Gaya mudah:

India,New Delhi,1200000000,Fri Aug 15 00:00:00 VET 1947

Gaya berbilang baris:

test.Country@f0eed6[
 name=India
 capital=New Delhi
 population=1200000000
 independenceDay=Fri Aug 15 00:00:00 VET 1947
 ]

NO_FIELD_NAMES_STYLE (gaya tanpa nama medan)

test.Country@1d05c81[India,New Delhi,1200000000,Fri Aug 15 00:00:00 VET 1947]

SHORT_PREFIX_STYLE (gaya awalan pendek)

Country[name=India,capital=New Delhi,population=1200000000,independenceDay=Fri Aug 15 00:00:00 VET 1947]

ToStringStyle.DEFAULT_STYLE (gaya lalai)

test.Country@1d05c81[name=India,capital=New Delhi,population=1200000000,independenceDay=Fri Aug 15 00:00:00 VET 1947]

Pustaka sumber terbuka yang serupa daripada Google, Guava juga menyediakan API yang mudah untuk menjana kod untuk kaedah toString dalam Java.

Apabila kaedah toString dipanggil dalam Java

toString ialah kaedah yang agak khusus dan dipanggil daripada banyak kaedah JavaAPI seperti println(), printf() , logging, assert statements , IDE debuggers, semasa mencetak koleksi dan apabila menggabungkan. Jika subkelas tidak mengatasi toString(), maka pelaksanaan lalai yang ditakrifkan dalam kelas Objek dipanggil. Ramai pembangun menggunakan API pengelogan seperti Log4J atau java.util.Logger untuk mengeluarkan log dan sering terlepas Object di sini.

logger.info("Customer not found:" + customer)

dan jika Pelanggan tidak mengatasi kepadaString dan mengeluarkan maklumat penting seperti customerId, customerName, dsb. maka ia akan menjadi agak sukar untuk mendiagnosis masalah tersebut. Inilah sebabnya mengapa ia sentiasa bernilai mengatasi toString di Jawa. Mari kita lihat beberapa faedah jika kita melakukan ini.

Faedah mengatasi kaedah toString

  1. Seperti yang dibincangkan di atas, toString yang ditindih dengan betul membantu dengan penyahpepijatan dengan mencetak maklumat penting.
  2. Jika objek penting disimpan dalam koleksi, kemudian mencetak koleksi akan memanggil kaedah toString objek yang disimpan, yang boleh mencetak maklumat penting. Satu contoh klasik kaedah toString yang tidak ditindih ialah Array dalam Java, yang mencetak hasil pelaksanaan lalai dan bukannya kandungan tatasusunan. Walaupun terdapat beberapa cara untuk mencetak kandungan tatasusunan menggunakan Arrays.toString() dan seumpamanya; tetapi memandangkan Array ialah objek Java, adalah lebih baik jika ia tahu cara mencetak sendiri, sama seperti kelas koleksi seperti List atau Set .

Ini hanyalah sebahagian daripada faedah yang anda akan dapat dengan melaksanakan atau mengatasi kaedah toString dalam Java , terdapat banyak lagi faedah yang anda akan dapat dan pelajari sendiri. Saya harap petua ini membantu anda memanfaatkan sepenuhnya pelaksanaan toString anda. Beritahu kami jika anda mengetahui sebarang cara unik untuk bekerja dengan toString yang membantu anda dalam aplikasi Java anda.

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