Browse Source

fix bean bug

Looly 5 years ago
parent
commit
9d02dcd5d8
2 changed files with 12 additions and 1 deletions
  1. 1 0
      CHANGELOG.md
  2. 11 1
      hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java

+ 1 - 0
CHANGELOG.md

@@ -8,6 +8,7 @@
 ### 新特性
 ### Bug修复
 * 【core   】     修复NumberUtil.partValue有余数问题(issue#I1KX66@Gitee)
+* 【core   】     修复BeanUtil.isEmpty不能忽略static字段问题(issue#I1KZI6@Gitee)
 
 -------------------------------------------------------------------------------------------------------------
 ## 5.3.8 (2020-06-16)

+ 11 - 1
hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java

@@ -690,6 +690,9 @@ public class BeanUtil {
 
 		final Field[] fields = ReflectUtil.getFields(bean.getClass());
 		for (Field field : fields) {
+			if(ModifierUtil.isStatic(field)){
+				continue;
+			}
 			if (ignoreFields != null && ArrayUtil.containsIgnoreCase(ignoreFields, field.getName())) {
 				// 不处理忽略的Fields
 				continue;
@@ -723,7 +726,8 @@ public class BeanUtil {
 	}
 
 	/**
-	 * 判断Bean是否为空对象,空对象表示本身为<code>null</code>或者所有属性都为<code>null</code>
+	 * 判断Bean是否为空对象,空对象表示本身为<code>null</code>或者所有属性都为<code>null</code><br>
+	 * 此方法不判断static属性
 	 *
 	 * @param bean             Bean对象
 	 * @param ignoreFiledNames 忽略检查的字段名
@@ -733,6 +737,9 @@ public class BeanUtil {
 	public static boolean isEmpty(Object bean, String... ignoreFiledNames) {
 		if (null != bean) {
 			for (Field field : ReflectUtil.getFields(bean.getClass())) {
+				if(ModifierUtil.isStatic(field)){
+					continue;
+				}
 				if ((false == ArrayUtil.contains(ignoreFiledNames, field.getName()))
 						&& null != ReflectUtil.getFieldValue(bean, field)) {
 					return false;
@@ -756,6 +763,9 @@ public class BeanUtil {
 			return true;
 		}
 		for (Field field : ReflectUtil.getFields(bean.getClass())) {
+			if(ModifierUtil.isStatic(field)){
+				continue;
+			}
 			if ((false == ArrayUtil.contains(ignoreFiledNames, field.getName()))//
 					&& null == ReflectUtil.getFieldValue(bean, field)) {
 				return true;