JavaRush /Blog Jawa /Random-JV /Carane èfèktif ngatasi ToString () cara nggunakake ToStri...
dio
tingkat
Москва

Carane èfèktif ngatasi ToString () cara nggunakake ToStringBuilder.

Diterbitake ing grup
ToStringBuilder minangka kelas pembantu sing diwenehake dening perpustakaan apache commons lang . ToStringBuilder minangka kelas sarana sing diwenehake dening perpustakaan Apache Commons Lang. Nyedhiyakake kontrol lengkap lan luwih apik babagan data obyek lan jumlah sing kudu diowahi kanthi cara toString (), uga ing format apa. ToStringBuilder mbantu sampeyan supaya ora nulis akeh kode dening ngilangke perlu kanggo ngganti ToString () cara ing kelas anak. ToStringBuilder bisa digunakake kanggo nggawe cithakan saka macem-macem kanggo njupuk kauntungan lengkap saka kabisan menehi. Kanggo nyakup Commons-Lang ing proyek sampeyan, tambahake dependensi ing ngisor iki menyang file konfigurasi Maven sampeyan. Ing artikel iki, aku bakal menehi sawetara conto panggunaan conto sing bisa dianggep minangka praktik paling apik kanggo ngatasi metode ToString () ing kelas aplikasi sabanjure. Kanggo nduduhake kemungkinan beda nggunakake ToStringBuilder kanggo mbangun toString () cara ing skenario beda, Aku bakal nggawe telung model: AbstractUser.java, WebUser.java lan GuestUser.java. commons-lang commons-lang 2.5
AbstractUser.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; } }
GuestUser.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; } }
Macem-macem kasus panggunaan
1) cara toString () ing kelas super digunakake dening kabeh kelas anak.
Sampeyan bisa ngalahake cara toString () ing kelas obyek tingkat ndhuwur, i.e. ing kasus kita AbstractUser.java. Cara iki digunakake dening kabeh kelas anak kajaba padha ngemot versi dhewe saka toString () cara. @Override public String toString() { return ToStringBuilder.reflectionToString(this); } Ing ndhuwur ToString () cara saged menehi kabeh informasi kasedhiya bab kelas saiki, iku uga bisa ing subclasses kajaba subclass overrides ToString () cara. 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) Format khusus saka jinis apa wae, kayata Data
Sampeyan bisa ngetrapake format khusus menyang lapangan apa wae ing metode ToString. Conto format khusus ditampilake ing ngisor iki: 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); } } Kanggo nggunakake format, selehake ing cara kaya iki: @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) Gunakake informasi saka kelas super ing subclass kanthi cara nelpon gampang
Yen sampeyan pengin override ToString () ing kelas anak kanggo nambah soko kanggo informasi sing ditampa saka kelas super, nindakaken kaya iki: 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) Panganggone informasi mung nganti tingkat tartamtu saka hirarki warisan
Upamane ing sawetara kelas bocah sampeyan kudu nggedhekake lapangan kabeh kelas super, sampeyan bisa nyakup informasi nganti tingkat hierarki warisan tartamtu kanthi cara ing ngisor iki: 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) Tampilake mung informasi sing dikarepake
Kadhangkala sampeyan ora pengin nyakup kabeh lapangan kelas ing metode ToString (). Banjur sampeyan bisa nindakake kaya iki: 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] Sampeyan bisa ngundhuh kode sumber conto ing ndhuwur saka link iki. Ngundhuh sumber Artikel asli: Cara ngatasi toString () kanthi efektif karo ToStringBuilder Translated
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION