जटिल बराबर () विधि

बराबर विधि को आसानी से लागू करने के लिए , आप EqualsBuilder वर्ग का उपयोग कर सकते हैं । यह कैसे काम करता है यह दिखाने के लिए यहां कुछ उदाहरण दिए गए हैं।

तुलना के लिए विशिष्ट फ़ील्ड सेट करना:

public class User {
   private String name;
   private String email;

   @Override
   public boolean equals(Object o) {
       if (this == o) return true;

       if (!(o instanceof User user)) return false;

       return new EqualsBuilder().append(name, user.name).append(email, user.email).isEquals();
   }
}

साथ ही, यह वर्ग प्रतिबिंब के माध्यम से वस्तुओं की तुलना कर सकता है:

@Override
public boolean equals(Object obj) {
   return EqualsBuilder.reflectionEquals(this, obj);
}

जटिल हैशकोड () विधि

हैशकोड पद्धति को लागू करने के लिए , आपको हैशकोडबिल्डर वर्ग का उपयोग करना चाहिए ।

फील्ड चयन:

@Override
public int hashCode() {
   return new HashCodeBuilder(17, 37)
           .append(name)
           .append(email)
           .toHashCode();
}

हैश कोड बनाने के लिए प्रतिबिंब का उपयोग करना:

@Override
public int hashCode() {
   return HashCodeBuilder.reflectionHashCode(this);
}

We use reflection and ignore certain fields:
@Override
public int hashCode() {
   return HashCodeBuilder.reflectionHashCode(this, "name");
}

जटिल टूस्ट्रिंग () विधि

इसी तरह, आप toString() विधि को भी कार्यान्वित कर सकते हैं । फिर से, हम ToStringBuilder वर्ग का उपयोग करते हैं ।

फ़ील्ड पिछले दो मामलों की तरह सेट हैं:

@Override
public String toString() {
   return new ToStringBuilder(this)
           .append(name)
           .append(email)
           .toString();
}

परिणाम उदाहरण:

org.example.User@4b67cf4d[name=John,email=email@email.com]

आप फ़ील्ड नाम भी स्पष्ट रूप से निर्दिष्ट कर सकते हैं:

@Override
public String toString() {
   return new ToStringBuilder(this)
           .append("nameUser", name)
           .append("emailUser", email)
           .toString();
}

परिणाम उदाहरण:

org.example.User@4b67cf4d[nameUser=John,emailUser=email@email.com]

आप सेटिंग का उपयोग करके टेक्स्ट शैली बदल सकते हैं:

@Override
public String toString() {
   return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
           .append(name)
           .append(email)
           .toString();
}

परिणाम उदाहरण:

User[John,emailUser=email@email.com]

JSON, no Classname, short और अन्य जैसी कई शैलियाँ हैं।

प्रतिबिंब का उपयोग करना:

@Override
public String toString() {
   return ToStringBuilder.reflectionToString(this);
}

प्रतिबिंब का उपयोग करना और एक विशिष्ट शैली निर्दिष्ट करना:

@Override
public String toString() {
   return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}