public class EqualsBuilder extends Object implements Builder<Boolean>
Object.equals(Object) 方法的构建器
两个对象equals必须保证hashCode值相等
,hashCode值相等不能保证一定相等
使用方法如下:
public boolean equals(Object obj) {
if (null == obj) { 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();
}
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj);
}
Builder.HashKey| Constructor and Description |
|---|
EqualsBuilder()
构造,初始状态值为true
|
| Modifier and Type | Method and Description |
|---|---|
EqualsBuilder |
append(boolean lhs,
boolean rhs)
比较两个
boolean是否相等 |
EqualsBuilder |
append(byte lhs,
byte rhs)
比较两个
byte是否相等 |
EqualsBuilder |
append(char lhs,
char rhs)
比较两个
char是否相等 |
EqualsBuilder |
append(double lhs,
double rhs)
通过比较
doubleToLong返回的位的模式是否相等来比较两个double是否相等 |
EqualsBuilder |
append(float lhs,
float rhs)
Test if two
floats are equal byt testing that the
pattern of bits returned by doubleToLong are equal. |
EqualsBuilder |
append(int lhs,
int rhs)
比较两个
int是否相等 |
EqualsBuilder |
append(long lhs,
long rhs)
比较两个
long是否相等 |
EqualsBuilder |
append(Object lhs,
Object rhs)
使用两个
equals方法比较两个Object是否相等 |
EqualsBuilder |
append(short lhs,
short rhs)
比较两个
short是否相等 |
EqualsBuilder |
appendSuper(boolean superEquals)
将
super.equals()的结果添加到此构建器 |
Boolean |
build()
如果已选中的字段全部相等,则返回
true |
boolean |
isEquals()
如果已选中的字段全部相等,则返回
true |
static boolean |
reflectionEquals(Object lhs,
Object rhs,
boolean testTransients)
此方法使用反射来确定两个对象是否相等
|
static boolean |
reflectionEquals(Object lhs,
Object rhs,
boolean testTransients,
Class<?> reflectUpToClass,
String... excludeFields)
此方法使用反射来确定两个对象是否相等
|
static boolean |
reflectionEquals(Object lhs,
Object rhs,
Collection<String> excludeFields)
反射检查两个对象是否equals,此方法检查对象及其父对象的属性(包括私有属性)是否相等
|
static boolean |
reflectionEquals(Object lhs,
Object rhs,
String... excludeFields)
反射检查两个对象是否equals,此方法检查对象及其父对象的属性(包括私有属性)是否相等
|
void |
reset()
重置EqualsBuilder,以便您可以再次使用同一对象
|
protected EqualsBuilder |
setEquals(boolean isEquals)
设置
isEquals值 |
public static boolean reflectionEquals(Object lhs, Object rhs, Collection<String> excludeFields)
lhs - 此对象rhs - 另一个对象excludeFields - 排除的字段集合,如果有不参与计算equals的字段加入此集合即可truepublic static boolean reflectionEquals(Object lhs, Object rhs, String... excludeFields)
lhs - 此对象rhs - 另一个对象excludeFields - 排除的字段集合,如果有不参与计算equals的字段加入此集合即可truepublic static boolean reflectionEquals(Object lhs, Object rhs, boolean testTransients)
lhs - 对象rhs - 其他对象testTransients - 是否测试忽略EqualsExcludepublic static boolean reflectionEquals(Object lhs, Object rhs, boolean testTransients, Class<?> reflectUpToClass, String... excludeFields)
lhs - 对象rhs - 其他对象testTransients - 是否测试忽略reflectUpToClass - 要反映到(包括)的超类可以是nullexcludeFields - 要从测试中排除的字段名的数组public EqualsBuilder appendSuper(boolean superEquals)
super.equals()的结果添加到此构建器superEquals - 调用 super.equals()的结果public EqualsBuilder append(Object lhs, Object rhs)
equals方法比较两个Object是否相等lhs - 左边对象rhs - 右边对象public EqualsBuilder append(long lhs, long rhs)
long是否相等lhs - 左边对象rhs - 右边对象public EqualsBuilder append(int lhs, int rhs)
int是否相等lhs - 左边对象rhs - 右边对象public EqualsBuilder append(short lhs, short rhs)
short是否相等lhs - 左边对象rhs - 右边对象public EqualsBuilder append(char lhs, char rhs)
char是否相等lhs - 左边对象rhs - 右边对象public EqualsBuilder append(byte lhs, byte rhs)
byte是否相等lhs - 左边对象rhs - 右边对象public EqualsBuilder append(double lhs, double rhs)
doubleToLong返回的位的模式是否相等来比较两个double是否相等lhs - 左边对象rhs - 右边对象public EqualsBuilder append(float lhs, float rhs)
Test if two floats are equal byt testing that the
pattern of bits returned by doubleToLong are equal.
This handles NaNs, Infinities, and -0.0.
It is compatible with the hash code generated by
HashCodeBuilder.
lhs - 左边对象 floatrhs - 右边对象 floatpublic EqualsBuilder append(boolean lhs, boolean rhs)
boolean是否相等lhs - 左边对象 booleanrhs - 右边对象 booleanpublic boolean isEquals()
trueprotected EqualsBuilder setEquals(boolean isEquals)
isEquals值isEquals - 设定值public Boolean build()
truepublic void reset()
Copyright © 2022. All rights reserved.