8 Mart 2019 Cuma

Lang3 HashCodeBuilder Sınıfı

Giriş
Şu satırı dahil ederiz.
import org.apache.commons.lang3.builder.HashCodeBuilder;
Bu sınıfın en son toHashCode() metodunu çağırmak lazım. build() metodunu çağırmak fazladan işlemci kullanımına sebep olur.

append metodu
Şöyle yaparız.
public class Admin {

  private Long id;
  private String userName;

  public String getUserName() {
    return userName;
  }

  @Override
  public boolean equals(Object o) {
    if (!(o instanceof Admin)) {
      return false;
    }
    Admin otherAdmin  = (Admin) o;
    EqualsBuilder builder = new EqualsBuilder();
    builder.append(getUserName(), otherAdmin.getUserName());
    return builder.isEquals();
  }

  @Override
  public int hashCode() {
    HashCodeBuilder builder = new HashCodeBuilder();
    builder.append(getUserName());
    return builder.hashCode();
  }
}
reflectionHashCode metodu - Object + Collection
Şöyle yaparız.
@Override
public int hashCode() {
  return HashCodeBuilder.reflectionHashCode(this);
}
reflectionHashCode metodu - Object + Collection
Şöyle yaparız.
public class Admin {

  private Long id;
  private String userName;

  public String getUserName() {
    return userName;
  }

  @Override
  public boolean equals(Object o) {
   return EqualsBuilder.reflectionEquals(this, o, Arrays.asList(id));
  }

  @Override
  public int hashCode() {
    return HashCodeBuilder.reflectionHashCode(this, Arrays.asList(id));
  }
}
reflectionHashCode metodu - Object + boolean
İkinci parametre testTransients anlamına gelir
Örnek
Şöyle yaparız.
public class Address {

  private String addressKey;
  private String postalCode;
  private String country;
  ...
  @Override
  public int hashCode() {
    return HashCodeBuilder.reflectionHashCode(this, false);
  }
  ...
}
toHashCode metodu
build() metodu ile aynı işi yapar. Şöyle yaparız.
public int hashCode() {
  return new HashCodeBuilder(17, 37)
    .append(field1)
    .append(field2)
    .toHashCode();
}





Hiç yorum yok:

Yorum Gönder