2014-09-03 315 views
2

在每一个equals方法我需要写一个块这样每隔(相关)属性:确实的Java提供的equals方法采用两个参数

@Override 
public boolean equals(Object obj) { 
    ... 
    if (member1 == null) { 
    if (other.member1 != null) { 
     return false; 
    } 
    } else if (!member1.equals(other.member1)) { 
    return false; 
    } 
    ... 
    return true; 
} 

这是每次没有任何好处只是为了同避免NullPointerExceptions。

那岂不是更漂亮,只为了呼唤

boolean doesIt = SomeClass.equals(member1, other.member1); 

此方法将检查是否都为null,如果没有它调用默认member1上平等。

这将意味着我的equals方法可在结束这个样子

@Override 
public boolean equals(Object obj) { 
    return obj != null 
     && getClass() == obj.getClass() 
     && SomeClass.equals(member1, (((XX) other).member1) 
     && SomeClass.equals(member2, (((XX) other).member2) 
     && SomeClass.equals(member3, (((XX) other).member3) 
     && SomeClass.equals(member4, (((XX) other).member4); 
} 
在我眼里

更清晰,不易出错。

当然,我自己编写这个类/方法绝对没有问题,但我想知道是否有可能已经有一个提供equals(Object,Object)的类。

回答