From ead5e1c13ad7417808b419a764356f8de01bf908 Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 6 Jul 2021 02:47:54 +0800 Subject: [PATCH] fix pr#1694 --- CHANGELOG.md | 1 + .../cn/hutool/core/builder/EqualsBuilder.java | 25 ++++++++----------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76438a434..d4e50f8a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ ### 🐞Bug修复 * 【core 】 修复RadixUtil.decode非static问题(issue#I3YPEH@Gitee) +* 【core 】 修复EqualsBuilder数组判断问题(pr#1694@Github) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/main/java/cn/hutool/core/builder/EqualsBuilder.java b/hutool-core/src/main/java/cn/hutool/core/builder/EqualsBuilder.java index 55ed866d3..bb7c7e46c 100644 --- a/hutool-core/src/main/java/cn/hutool/core/builder/EqualsBuilder.java +++ b/hutool-core/src/main/java/cn/hutool/core/builder/EqualsBuilder.java @@ -39,7 +39,7 @@ import java.util.Set; * return EqualsBuilder.reflectionEquals(this, obj); * } * - * + *

* 来自Apache Commons Lang改造 */ public class EqualsBuilder implements Builder { @@ -241,7 +241,7 @@ public class EqualsBuilder implements Builder { * @since 2.0 */ public static boolean reflectionEquals(final Object lhs, final Object rhs, final boolean testTransients, final Class reflectUpToClass, - final String... excludeFields) { + final String... excludeFields) { if (lhs == rhs) { return true; } @@ -375,19 +375,15 @@ public class EqualsBuilder implements Builder { return this; } if (lhs == null || rhs == null) { - this.setEquals(false); - return this; + return setEquals(false); } - final Class lhsClass = lhs.getClass(); - if (false == lhsClass.isArray()) { - // The simple case, not an array, just test the element - this.setEquals(lhs.equals(rhs)); - return this; + if (ArrayUtil.isArray(lhs)) { + // 判断数组的equals + return setEquals(ArrayUtil.equals(lhs, rhs)); } - // 判断数组的equals - this.setEquals(ArrayUtil.equals(lhs, rhs)); - return this; + // The simple case, not an array, just test the element + return setEquals(lhs.equals(rhs)); } /** @@ -549,10 +545,11 @@ public class EqualsBuilder implements Builder { * Sets the isEquals value. * * @param isEquals The value to set. - * @since 2.1 + * @return this */ - protected void setEquals(boolean isEquals) { + protected EqualsBuilder setEquals(boolean isEquals) { this.isEquals = isEquals; + return this; } /**