JavaRush /Kurslar /All lectures for UZ purposes /apache-commons-lang kutubxonasi

apache-commons-lang kutubxonasi

All lectures for UZ purposes
Daraja, Dars
Mavjud

Murakkab equals() metodi

Metodni osonlik bilan amalga oshirish uchun equals EqualsBuilder klassidan foydalanish mumkin. Mana bir nechta misollar, qanday ishlashini ko'rsatadi.

Ma'lum bir maydonlarni taqqoslash uchun berish:


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();
   }
}

Bu klass reflection orqali ob'ektlarni taqqoslashi ham mumkin:


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

Murakkab hashCode() metodi

Metodni amalga oshirish uchun hashCode HashCodeBuilder klassidan foydalanish kerak.

Maydonlarni tanlash:


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

reflection orqali hash-code qurish:


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

reflectiondan foydalanamiz va ma'lum maydonlarni e'tiborsiz qoldiramiz:
@Override
public int hashCode() {
   return HashCodeBuilder.reflectionHashCode(this, "name");
}

Murakkab toString() metodi

Xuddi shu sxemaga muvofiq, metodi toString() ham amalga oshirilishi mumkin. Yana ToStringBuilder klasidan foydalanamiz.

Maydonlar oldingi ikki holatda ham berilmoqda:


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

Natija namunasi:

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

Maydon nomlarini aniq ko'rsatishimiz mumkin:


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

Natija namunasi:

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

Matn uslubini sozlamalar orqali o'zgartirishimiz mumkin:


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

Natija namunasi:

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

Bir nechta uslublar mavjud, masalan JSON, no Classname, short va boshqalar.

reflectiondan foydalanish:


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

reflectiondan foydalanish va ma'lum bir uslubni belgilash:


@Override
public String toString() {
   return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION