Package org.aoju.bus.core.builder
Class EqualsBuilder
java.lang.Object
org.aoju.bus.core.builder.EqualsBuilder
- All Implemented Interfaces:
Serializable,Builder<Boolean>
Object.equals(Object) 方法的构建器 两个对象equals必须保证hashCode值相等 ,hashCode值相等不能保证一定相等
使用方法如下:
public boolean equals(Object object) {
if (null == object) {
return false;
}
if (object == this) {
return true;
}
if (object.getClass() != getClass()) {
return false;
}
MyClass rhs = (MyClass) object;
return new EqualsBuilder().appendSuper(super.equals(object)).append(field1, rhs.field1)
.append(field2, rhs.field2).append(field3, rhs.field3).isEquals();
}
public boolean equals(Object object) {
return EqualsBuilder.reflectionEquals(this, object);
}
- Since:
- Java 17+
- Author:
- Kimi Liu
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.aoju.bus.core.builder.Builder
Builder.HashKey -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionappend(boolean lhs, boolean rhs) 比较两个boolean是否相等append(byte lhs, byte rhs) 比较两个byte是否相等append(char lhs, char rhs) 比较两个char是否相等append(double lhs, double rhs) 通过比较doubleToLong返回的位的模式是否相等来比较两个double是否相等append(float lhs, float rhs) Test if twofloats are equal byt testing that the pattern of bits returned by doubleToLong are equal.append(int lhs, int rhs) 比较两个int是否相等append(long lhs, long rhs) 比较两个long是否相等append(short lhs, short rhs) 比较两个short是否相等使用两个equals方法比较两个Object是否相等appendSuper(boolean superEquals) 将super.equals()的结果添加到此构建器build()如果已选中的字段全部相等,则返回truebooleanisEquals()如果已选中的字段全部相等,则返回truestatic booleanreflectionEquals(Object lhs, Object rhs, boolean testTransients) 此方法使用反射来确定两个对象是否相等static booleanreflectionEquals(Object lhs, Object rhs, boolean testTransients, Class<?> reflectUpToClass, String... excludeFields) 此方法使用反射来确定两个对象是否相等static booleanreflectionEquals(Object lhs, Object rhs, String... excludeFields) 反射检查两个对象是否equals,此方法检查对象及其父对象的属性(包括私有属性)是否相等static booleanreflectionEquals(Object lhs, Object rhs, Collection<String> excludeFields) 反射检查两个对象是否equals,此方法检查对象及其父对象的属性(包括私有属性)是否相等voidreset()重置EqualsBuilder,以便您可以再次使用同一对象protected EqualsBuildersetEquals(boolean isEquals) 设置isEquals值
-
Constructor Details
-
EqualsBuilder
public EqualsBuilder()构造,初始状态值为true
-
-
Method Details
-
reflectionEquals
反射检查两个对象是否equals,此方法检查对象及其父对象的属性(包括私有属性)是否相等- Parameters:
lhs- 此对象rhs- 另一个对象excludeFields- 排除的字段集合,如果有不参与计算equals的字段加入此集合即可- Returns:
- 两个对象是否equals, 是返回
true
-
reflectionEquals
-
reflectionEquals
-
reflectionEquals
public static boolean reflectionEquals(Object lhs, Object rhs, boolean testTransients, Class<?> reflectUpToClass, String... excludeFields) 此方法使用反射来确定两个对象是否相等- Parameters:
lhs- 对象rhs- 其他对象testTransients- 是否测试忽略reflectUpToClass- 要反映到(包括)的超类可以是nullexcludeFields- 要从测试中排除的字段名的数组- Returns:
- true如果两个对象已测试相等
-
appendSuper
将super.equals()的结果添加到此构建器- Parameters:
superEquals- 调用super.equals()的结果- Returns:
- EqualsBuilder - 自定义返回链
-
append
使用两个equals方法比较两个Object是否相等- Parameters:
lhs- 左边对象rhs- 右边对象- Returns:
- EqualsBuilder - 自定义返回链
-
append
比较两个long是否相等- Parameters:
lhs- 左边对象rhs- 右边对象- Returns:
- EqualsBuilder - 自定义返回链
-
append
比较两个int是否相等- Parameters:
lhs- 左边对象rhs- 右边对象- Returns:
- EqualsBuilder - 自定义返回链
-
append
比较两个short是否相等- Parameters:
lhs- 左边对象rhs- 右边对象- Returns:
- EqualsBuilder - 自定义返回链
-
append
比较两个char是否相等- Parameters:
lhs- 左边对象rhs- 右边对象- Returns:
- EqualsBuilder - 自定义返回链
-
append
比较两个byte是否相等- Parameters:
lhs- 左边对象rhs- 右边对象- Returns:
- EqualsBuilder - 自定义返回链
-
append
通过比较doubleToLong返回的位的模式是否相等来比较两个double是否相等- Parameters:
lhs- 左边对象rhs- 右边对象- Returns:
- EqualsBuilder - 自定义返回链
-
append
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.- Parameters:
lhs- 左边对象floatrhs- 右边对象float- Returns:
- EqualsBuilder - 自定义返回链
-
append
比较两个boolean是否相等- Parameters:
lhs- 左边对象booleanrhs- 右边对象boolean- Returns:
- EqualsBuilder - 自定义返回链
-
isEquals
public boolean isEquals()如果已选中的字段全部相等,则返回true- Returns:
- boolean
-
setEquals
设置isEquals值- Parameters:
isEquals- 设定值- Returns:
- this
-
build
-
reset
public void reset()重置EqualsBuilder,以便您可以再次使用同一对象
-