JavaRush /Java Blog /Random-ID /Cara mengganti metode ToString() secara efektif menggunak...
dio
Level 16
Москва

Cara mengganti metode ToString() secara efektif menggunakan ToStringBuilder.

Dipublikasikan di grup Random-ID
ToStringBuilder adalah kelas pembantu yang disediakan oleh perpustakaan bahasa apache commons . ToStringBuilder adalah kelas utilitas yang disediakan oleh perpustakaan Apache Commons Lang. Ini memberikan kontrol yang lengkap dan lebih baik atas data objek apa dan berapa banyak yang harus dihasilkan oleh metode toString(), serta dalam format apa. ToStringBuilder membantu Anda menghindari penulisan banyak kode dengan menghilangkan kebutuhan untuk mengganti metode ToString() di kelas turunan. ToStringBuilder dapat digunakan untuk membuat semacam templat untuk memanfaatkan sepenuhnya kemampuan yang disediakannya. Untuk menyertakan Commons-Lang dalam proyek Anda, tambahkan dependensi berikut ke file konfigurasi Maven Anda. Pada artikel ini, saya akan memberikan beberapa contoh contoh penggunaan yang dapat dianggap sebagai praktik terbaik untuk mengganti metode ToString() di kelas aplikasi Anda berikutnya. Untuk mendemonstrasikan berbagai kemungkinan penggunaan ToStringBuilder untuk membangun metode toString() dalam skenario berbeda, saya akan membuat tiga model: AbstrakUser.java, WebUser.java, dan GuestUser.java. commons-lang commons-lang 2.5
AbstrakPengguna.java
package com.howtodoinjava.model; import java.io.Serializable; import org.apache.commons.lang.builder.ToStringBuilder; import com.howtodoinjava.style.CustomToStringStyle; public abstract class AbstractUser implements Serializable { private static final long serialVersionUID = 1L; private int id; private String firstName; private String lastName; private String age; //Setterss and getters }
WebUser.java
public class WebUser extends AbstractUser { private static final long serialVersionUID = 1L; private Date lastLoggedIn; public Date getLastLoggedIn() { return lastLoggedIn; } public void setLastLoggedIn(Date lastLoggedIn) { this.lastLoggedIn = lastLoggedIn; } }
Pengguna Tamu.java
public class GuestUser extends WebUser { private static final long serialVersionUID = 1L; private String location; public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } }
Berbagai kasus penggunaan
1) metode toString() di kelas super digunakan oleh semua kelas anak.
Anda dapat mengganti metode toString() di kelas objek tingkat atas, mis. dalam kasus kami AbstrakUser.java. Metode ini digunakan oleh semua kelas anak kecuali kelas tersebut berisi metode toString() versinya sendiri. @Override public String toString() { return ToStringBuilder.reflectionToString(this); } Metode ToString() di atas mampu memberikan semua informasi yang tersedia tentang kelas saat ini, metode ini juga akan berfungsi di subkelas kecuali subkelas tersebut mengesampingkan metode ToString(). package com.howtodoinjava; import java.util.Date; import com.howtodoinjava.model.GuestUser; import com.howtodoinjava.model.WebUser; public class ToStringDemoUsage { public static void main(String[] args) { GuestUser guest = getGuestUser(); System.out.println(guest); } public static GuestUser getGuestUser() { GuestUser user = new GuestUser(); user.setId(100); user.setFirstName("Lokesh"); user.setLastName("Gupta"); user.setAge("30"); user.setLastLoggedIn(new Date()); user.setLocation("New Delhi"); return user; } } Output: com.howtodoinjava.model.GuestUser@d1f24bb[location=New Delhi,lastLoggedIn=Mon Jun 03 13:31:05 IST 2013,id=100,firstName=Lokesh,lastName=Gupta,age=30]
2) Pemformatan khusus jenis apa pun, seperti Data
Anda dapat menerapkan format khusus ke bidang mana pun dalam metode ToString. Contoh pemformatan khusus ditunjukkan di bawah ini: package com.howtodoinjava.style; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.lang.builder.ToStringStyle; public class CustomToStringStyle extends ToStringStyle { private static final long serialVersionUID = 1L; protected void appendDetail(StringBuffer buffer, String fieldName, Object value) { if (value instanceof Date) { value = new SimpleDateFormat("yyyy-MM-dd").format(value); } buffer.append(value); } } Untuk menggunakan pemformatan, tempatkan dalam metode seperti ini: @Override public String toString() { return ToStringBuilder.reflectionToString(this, new CustomToStringStyle()); } Output: com.howtodoinjava.model.GuestUser@7910769b[location=New Delhi,lastLoggedIn=2013-06-03,id=100,firstName=Lokesh,lastName=Gupta,age=30]
3) Gunakan informasi dari kelas super di subkelas dengan pemanggilan metode yang mudah
Jika Anda ingin mengganti ToString() di kelas anak untuk menambahkan sesuatu ke informasi yang diterima dari kelas super, lakukan seperti ini: public class WebUser extends AbstractUser { //Other code @Override public String toString() { return new ToStringBuilder(this) .appendSuper(super.toString()) .append("lastLoggedIn", lastLoggedIn).toString(); } } Output: com.howtodoinjava.model.GuestUser@22aed3a5[location=New Delhi,lastLoggedIn=2013-06-03,id=100,firstName=Lokesh,lastName=Gupta,age=30,CustomMessage=I have been added additionally]
4) Penggunaan informasi hanya sampai tingkat tertentu dari hierarki warisan
Misalkan di beberapa kelas anak Anda perlu memperluas bidang semua kelas super, Anda dapat memasukkan informasi hingga tingkat tertentu dari hierarki warisan dengan cara berikut: public class GuestUser extends WebUser { @Override public String toString() { return ToStringBuilder.reflectionToString(this,new CustomToStringStyle(),true,WebUser.class); } } Output: com.howtodoinjava.model.GuestUser@18dd7404[location=New Delhi,lastLoggedIn=2013-06-03]
5) Tampilkan hanya informasi yang Anda inginkan
Terkadang Anda tidak ingin memasukkan semua bidang kelas dalam metode ToString(). Kemudian Anda dapat melakukannya seperti ini: public abstract class AbstractUser implements Serializable { //Other code @Override public String toString() { return new ToStringBuilder(this) .append("firstName", firstName) .append("lastName", lastName) .append("age", age).toString(); } } public class GuestUser extends WebUser { //Other code @Override public String toString() { return new ToStringBuilder(this) .appendSuper(super.toString()) .append("location", location).toString(); } } Output: com.howtodoinjava.model.GuestUser@6483dae1[firstName=Lokesh,lastName=Gupta,age=30,location=New Delhi] Anda dapat mendownload kode sumber dari contoh di atas dari link ini. Unduh sumber Artikel asli: Cara mengganti toString() secara efektif dengan ToStringBuilder Translated
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION