diff --git a/CHANGELOG.md b/CHANGELOG.md index 15b0e99b7..72467641d 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.8.29(2024-06-04) +# 5.8.29(2024-06-07) ### 🐣新特性 * 【core 】 DateUtil增加offsetYear方法 @@ -11,6 +11,7 @@ ### 🐞Bug修复 * 【core 】 修复AnnotationUtil可能的空指针错误 +* 【core 】 修复BeanUtil.isBean判断Dict错误问题(issue#I9VTZG@gitee) ------------------------------------------------------------------------------------------------------------- # 5.8.28(2024-05-29) diff --git a/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java b/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java index 25ada700c..4e1ca2936 100755 --- a/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/bean/BeanUtil.java @@ -6,6 +6,7 @@ import cn.hutool.core.bean.copier.ValueProvider; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.convert.Convert; +import cn.hutool.core.lang.Dict; import cn.hutool.core.lang.Editor; import cn.hutool.core.map.CaseInsensitiveMap; import cn.hutool.core.map.MapUtil; @@ -74,6 +75,14 @@ public class BeanUtil { * @since 4.2.2 */ public static boolean hasSetter(Class clazz) { + if(null == clazz){ + return false; + } + // issue#I9VTZG,排除定义setXXX的预定义类 + if(Dict.class == clazz){ + return false; + } + if (ClassUtil.isNormalClass(clazz)) { for (Method method : clazz.getMethods()) { if (method.getParameterCount() == 1 && method.getName().startsWith("set")) { @@ -117,6 +126,9 @@ public class BeanUtil { * @since 5.1.0 */ public static boolean hasPublicField(Class clazz) { + if(null == clazz){ + return false; + } if (ClassUtil.isNormalClass(clazz)) { for (Field field : clazz.getFields()) { if (ModifierUtil.isPublic(field) && false == ModifierUtil.isStatic(field)) { diff --git a/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java index d8d969aef..41b8df237 100755 --- a/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/bean/BeanUtilTest.java @@ -5,6 +5,8 @@ import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.bean.copier.ValueProvider; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.lang.Console; +import cn.hutool.core.lang.Dict; import cn.hutool.core.map.MapBuilder; import cn.hutool.core.map.MapUtil; import cn.hutool.core.thread.ThreadUtil; @@ -925,4 +927,10 @@ public class BeanUtilTest { final boolean b = BeanUtil.hasGetter(Object.class); Assert.assertFalse(b); } + + @Test + public void issueI9VTZGTest() { + final boolean bean = BeanUtil.isBean(Dict.class); + Assert.assertFalse(bean); + } }