修复BeanUtil.isBean判断Dict错误问题

This commit is contained in:
Looly 2024-06-07 15:22:15 +08:00
parent 99cf24267f
commit 7a6ab19649
3 changed files with 22 additions and 1 deletions

View File

@ -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)

View File

@ -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)) {

View File

@ -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);
}
}