JavaRush /Java Blog /Random-TL /Paano epektibong i-override ang ToString() method gamit a...
dio
Antas
Москва

Paano epektibong i-override ang ToString() method gamit ang ToStringBuilder.

Nai-publish sa grupo
Ang ToStringBuilder ay isang helper class na ibinigay ng apache commons lang library . Ang ToStringBuilder ay isang utility class na ibinigay ng mga library ng Apache Commons Lang. Nagbibigay ito ng kumpleto at mas mahusay na kontrol sa kung anong object data at kung magkano ang dapat na i-output ng toString() method, gayundin sa anong format. Tinutulungan ka ng ToStringBuilder na maiwasan ang pagsusulat ng maraming code sa pamamagitan ng pag-aalis ng pangangailangang i-override ang ToString() na pamamaraan sa mga klase ng bata. Ang ToStringBuilder ay maaaring gamitin upang lumikha ng isang template ng mga uri upang lubos na mapakinabangan ang mga kakayahan na ibinibigay nito. Upang isama ang Commons-Lang sa iyong proyekto, idagdag ang mga sumusunod na dependency sa iyong Maven configuration file. Sa artikulong ito, magbibigay ako ng ilang sample na halimbawa ng paggamit na maaaring ituring bilang pinakamahusay na kagawian para sa pag-override sa ToString() na paraan sa mga klase ng iyong susunod na aplikasyon. Upang ipakita ang iba't ibang posibilidad ng paggamit ng ToStringBuilder upang buuin ang toString() na paraan sa iba't ibang sitwasyon, gagawa ako ng tatlong modelo: AbstractUser.java, WebUser.java at 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; } }
Iba't ibang kaso ng paggamit
1) ang toString() method sa super class ay ginagamit ng lahat ng child class.
Maaari mong i-override ang toString() method sa top-level object class, i.e. sa aming kaso AbstractUser.java. Ang paraang ito ay ginagamit ng lahat ng klase ng bata maliban kung naglalaman ang mga ito ng sarili nilang bersyon ng toString() na pamamaraan. @Override public String toString() { return ToStringBuilder.reflectionToString(this); } Ang pamamaraang ToString() sa itaas ay may kakayahang magbigay ng lahat ng magagamit na impormasyon tungkol sa kasalukuyang klase, gagana rin ito sa mga subclass maliban kung i-override ng subclass ang pamamaraang 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) Pasadyang pag-format ng anumang uri, tulad ng Data
Maaari kang maglapat ng custom na format sa anumang field sa ToString method. Ang isang halimbawa ng custom na pag-format ay ipinapakita sa ibaba: 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); } } Upang gamitin ang pag-format, ilagay ito sa paraang tulad nito: @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) Gumamit ng impormasyon mula sa super class sa subclass na may madaling method call
Kung gusto mong i-override ang ToString() sa isang child class para magdagdag ng isang bagay sa impormasyong natanggap mula sa super class, gawin itong ganito: 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) Paggamit ng impormasyon hanggang sa isang tiyak na antas ng hierarchy ng mana
Ipagpalagay na sa ilang child class kailangan mong palawakin ang mga field ng lahat ng super class, maaari mong isama ang impormasyon hanggang sa isang partikular na antas ng inheritance hierarchy sa sumusunod na paraan: 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) Ipakita lamang ang impormasyong gusto mo
Minsan hindi mo gustong isama ang lahat ng field ng isang klase sa ToString() method. Pagkatapos ay magagawa mo ito tulad nito: 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] Maaari mong i-download ang source code ng mga halimbawa sa itaas mula sa link na ito. I-download ang pinagmulan Orihinal na artikulo: Paano mabisang i-override ang toString() gamit ang ToStringBuilder Translated
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION