public class EqualsBuilder extends Object implements Builder<Boolean>
Object.equals(Object) 方法的构建器
两个对象equals必须保证hashCode值相等
,hashCode值相等不能保证一定相等
使用方法如下:
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();
}
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj);
}
| Constructor and Description |
|---|
EqualsBuilder() |
| Modifier and Type | Method and Description |
|---|---|
EqualsBuilder |
append(boolean[] lhs,
boolean[] rhs) |
EqualsBuilder |
append(boolean lhs,
boolean rhs) |
EqualsBuilder |
append(byte[] lhs,
byte[] rhs) |
EqualsBuilder |
append(byte lhs,
byte rhs) |
EqualsBuilder |
append(char[] lhs,
char[] rhs) |
EqualsBuilder |
append(char lhs,
char rhs) |
EqualsBuilder |
append(double[] lhs,
double[] rhs) |
EqualsBuilder |
append(double lhs,
double rhs) |
EqualsBuilder |
append(float[] lhs,
float[] rhs) |
EqualsBuilder |
append(float lhs,
float rhs) |
EqualsBuilder |
append(int[] lhs,
int[] rhs) |
EqualsBuilder |
append(int lhs,
int rhs) |
EqualsBuilder |
append(long[] lhs,
long[] rhs) |
EqualsBuilder |
append(long lhs,
long rhs) |
EqualsBuilder |
append(Object[] lhs,
Object[] rhs) |
EqualsBuilder |
append(Object lhs,
Object rhs) |
EqualsBuilder |
append(short[] lhs,
short[] rhs) |
EqualsBuilder |
append(short lhs,
short rhs) |
EqualsBuilder |
appendSuper(boolean superEquals) |
Boolean |
build()
构建
|
boolean |
isEquals() |
EqualsBuilder |
reflectionAppend(Object lhs,
Object rhs)
使用反射测试两个对象
|
static boolean |
reflectionEquals(Object lhs,
Object rhs,
boolean testTransients)
此方法使用反射来确定两个对象是否相等
|
static boolean |
reflectionEquals(Object lhs,
Object rhs,
boolean testTransients,
Class<?> reflectUpToClass,
boolean testRecursive,
String... excludeFields)
此方法使用反射来确定两个对象是否相等
|
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 |
setBypassReflectionClasses(List<Class<?>> bypassReflectionClasses) |
protected void |
setEquals(boolean isEquals) |
EqualsBuilder |
setExcludeFields(String... excludeFields) |
EqualsBuilder |
setReflectUpToClass(Class<?> reflectUpToClass) |
EqualsBuilder |
setTestRecursive(boolean testRecursive)
置反射比较对象时是否测试忽略.
|
EqualsBuilder |
setTestTransients(boolean testTransients)
设置反射比较对象时是否测试忽略.
|
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 static boolean reflectionEquals(Object lhs, Object rhs, boolean testTransients, Class<?> reflectUpToClass, boolean testRecursive, String... excludeFields)
lhs - 对象rhs - 其他对象testTransients - 是否测试忽略reflectUpToClass - 要反映到(包括)的超类可以是nulltestRecursive - 是否递归地调用非基元字段上的反射等于.excludeFields - 要从测试中排除的字段名的数组public EqualsBuilder setTestTransients(boolean testTransients)
testTransients - 是否测试忽略public EqualsBuilder setTestRecursive(boolean testRecursive)
testRecursive - 是否做递归测试public EqualsBuilder setBypassReflectionClasses(List<Class<?>> bypassReflectionClasses)
public EqualsBuilder setReflectUpToClass(Class<?> reflectUpToClass)
public EqualsBuilder setExcludeFields(String... excludeFields)
public EqualsBuilder reflectionAppend(Object lhs, Object rhs)
lhs - 左边对象rhs - 右边对象public EqualsBuilder appendSuper(boolean superEquals)
public EqualsBuilder append(Object lhs, Object rhs)
public EqualsBuilder append(long lhs, long rhs)
public EqualsBuilder append(int lhs, int rhs)
public EqualsBuilder append(short lhs, short rhs)
public EqualsBuilder append(char lhs, char rhs)
public EqualsBuilder append(byte lhs, byte rhs)
public EqualsBuilder append(double lhs, double rhs)
public EqualsBuilder append(float lhs, float rhs)
public EqualsBuilder append(boolean lhs, boolean rhs)
public EqualsBuilder append(Object[] lhs, Object[] rhs)
public EqualsBuilder append(long[] lhs, long[] rhs)
public EqualsBuilder append(int[] lhs, int[] rhs)
public EqualsBuilder append(short[] lhs, short[] rhs)
public EqualsBuilder append(char[] lhs, char[] rhs)
public EqualsBuilder append(byte[] lhs, byte[] rhs)
public EqualsBuilder append(double[] lhs, double[] rhs)
public EqualsBuilder append(float[] lhs, float[] rhs)
public EqualsBuilder append(boolean[] lhs, boolean[] rhs)
public boolean isEquals()
protected void setEquals(boolean isEquals)
public void reset()
Copyright © 2019. All rights reserved.