Overriding equals() & hashCode() in sub classes … considering super fields

前端 未结 10 1252
一个人的身影
一个人的身影 2020-12-07 13:19

Is there a specific rule on how Overriding equals() & hashCode() in sub classes considering super fields ?? k

10条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-07 13:46

    I prefer to use EqualsBuilder (and HashcodeBuilder) from the commons-lang package to make my equals() and hashcode() methods a lot easier to read.

    Example:

    public boolean equals(Object obj) {
     if (obj == null) { return false; }
     if (obj == this) { return true; }
     if (obj.getClass() != getClass()) {
       return false;
     }
     MyClass rhs = (MyClass) obj;
     return new EqualsBuilder()
                 .appendSuper(super.equals(obj))
                 .append(field1, rhs.field1)
                 .append(field2, rhs.field2)
                 .append(field3, rhs.field3)
                 .isEquals();
    }
    

提交回复
热议问题