EqualsBuilder vs. Equals Native Method

I came across code using method EqualsBuilder()in equals. Is there any advantage to using it instead of writing (or generating from an eclipse) our own logic? A simple example will be more evil.

Edit: if it has no advantages, the less code in the class, is there reflection overhead?

+4
source share
4 answers

There are several ways to approach this.

  • You can drop your own, which is most likely to get something subtle.

  • Eclipse equals hashCode - , , .

  • EqualsBuilder; .

  • , , , lombok EqualsAndHashCode .

+5

EqualsBuilder , equals . , EqualsBuilder .

EqualsBuilder equals() :

public boolean equals(Object other) {
    boolean result;

    if(this == other)
        result = true;
    else
    if(other == null)
        result = false;
    else
    if(other instanceof MyClass) {
        MyClass o=(MyClass) other;
        result = Objects.equals(this.a, o.a)
                 && Objects.equals(this.b, o.b)
                 // ...
                 && Objects.equals(this.z, o.z);
    }
    else
        result = false;

    return result;
}
0

, . Equals builder , , .

( hashCode )

0

, equals(), , "", ... .

, , , , , :

@Override
public boolean equals(Object other)
{
   if(other instanceof MyClass)
   {
      MyClass obj = (MyClass)other;
      return obj.getID() == this.getID();
   }
   else
      return false;
}

, this

-1
source

All Articles