Rog*_*son 10 java equals boilerplate
我实现了Java 7方式的equals():
@Override
public boolean equals(Object obj)
{
if (this == obj) return true;
if (obj == null) return false;
if (getClass() != obj.getClass()) return false;
MyClass other = (MyClass) obj;
return Objects.equal(myFirstField, other.myFirstField) &&
Objects.equal(mySecondField, other.mySecondField);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法减少代码重复?
我更喜欢类似的东西
@Override
public boolean equals(Object obj)
{
if (Objects.equalsEarlyExit(this, obj)) return Objects.equalstEarlyExitResult(this, obj);
MyClass other = (MyClass) obj;
return Objects.equal(myFirstField, other.myFirstField) &&
Objects.equal(mySecondField, other.mySecondField);
}
Run Code Online (Sandbox Code Playgroud)
或类似的.
您可以使用org.apache.commons.lang.builder.EqualsBuildercommons-lang
例子:
public boolean equals(Object other) {
return org.apache.commons.lang.builder.EqualsBuilder.reflectionEquals(this, other);
}
Run Code Online (Sandbox Code Playgroud)
其他例子:
private boolean equalsHelper(Object obj) {
if (obj == null) return false;
if (getClass() != obj.getClass()) return false;
return true;
}
public boolean equals(Object obj) {
if (this == obj) return true;
if(!equalsHelper(ob)) {
return false;
}
MyClass other = (MyClass) obj;
return new EqualsBuilder()
.append(myFirstField, other.myFirstField)
.append(mySecondField, other.mySecondField).isEquals()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
932 次 |
| 最近记录: |