From f770e00904e7537afe1b5013a489936c8b21996d Mon Sep 17 00:00:00 2001 From: Looly Date: Sat, 21 Sep 2024 20:54:03 +0800 Subject: [PATCH] fix convert --- .../dromara/hutool/core/bean/BeanUtil.java | 4 ++ .../core/convert/ConvertToBeanTest.java | 54 ++++++++++--------- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/bean/BeanUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/bean/BeanUtil.java index 617a574e5..0840bc112 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/bean/BeanUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/bean/BeanUtil.java @@ -683,6 +683,10 @@ public class BeanUtil { if (null == clazz) { return false; } + if(clazz == String.class){ + // String中有getter方法,但为字符串,不是Bean + return false; + } return hasGetter(clazz) || hasPublicField(clazz); } diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/convert/ConvertToBeanTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/convert/ConvertToBeanTest.java index 9f34e94c9..11fc369e0 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/convert/ConvertToBeanTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/convert/ConvertToBeanTest.java @@ -26,6 +26,8 @@ import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; +import static org.junit.jupiter.api.Assertions.assertEquals; + /** * 类型转换工具单元测试
* 转换为数组 @@ -44,9 +46,9 @@ public class ConvertToBeanTest { person.setSubName("sub名字"); final Map map = ConvertUtil.convert(Map.class, person); - Assertions.assertEquals(map.get("name"), "测试A11"); - Assertions.assertEquals(map.get("age"), 14); - Assertions.assertEquals("11213232", map.get("openid")); + assertEquals(map.get("name"), "测试A11"); + assertEquals(map.get("age"), 14); + assertEquals("11213232", map.get("openid")); } @Test @@ -58,15 +60,15 @@ public class ConvertToBeanTest { person.setSubName("sub名字"); final Map map = ConvertUtil.toMap(String.class, String.class, person); - Assertions.assertEquals("测试A11", map.get("name")); - Assertions.assertEquals("14", map.get("age")); - Assertions.assertEquals("11213232", map.get("openid")); + assertEquals("测试A11", map.get("name")); + assertEquals("14", map.get("age")); + assertEquals("11213232", map.get("openid")); final LinkedHashMap map2 = ConvertUtil.convert( new TypeReference>() {}, person); - Assertions.assertEquals("测试A11", map2.get("name")); - Assertions.assertEquals("14", map2.get("age")); - Assertions.assertEquals("11213232", map2.get("openid")); + assertEquals("测试A11", map2.get("name")); + assertEquals("14", map2.get("age")); + assertEquals("11213232", map2.get("openid")); } @Test @@ -79,10 +81,10 @@ public class ConvertToBeanTest { final Map map2 = ConvertUtil.toMap(String.class, String.class, map1); - Assertions.assertEquals("1", map2.get("key1")); - Assertions.assertEquals("2", map2.get("key2")); - Assertions.assertEquals("3", map2.get("key3")); - Assertions.assertEquals("4", map2.get("key4")); + assertEquals("1", map2.get("key1")); + assertEquals("2", map2.get("key2")); + assertEquals("3", map2.get("key3")); + assertEquals("4", map2.get("key4")); } @Test @@ -95,11 +97,11 @@ public class ConvertToBeanTest { map.put("subName", "sub名字"); final SubPerson subPerson = ConvertUtil.convert(SubPerson.class, map); - Assertions.assertEquals("88dc4b28-91b1-4a1a-bab5-444b795c7ecd", subPerson.getId().toString()); - Assertions.assertEquals(14, subPerson.getAge()); - Assertions.assertEquals("11213232", subPerson.getOpenid()); - Assertions.assertEquals("测试A11", subPerson.getName()); - Assertions.assertEquals("11213232", subPerson.getOpenid()); + assertEquals("88dc4b28-91b1-4a1a-bab5-444b795c7ecd", subPerson.getId().toString()); + assertEquals(14, subPerson.getAge()); + assertEquals("11213232", subPerson.getOpenid()); + assertEquals("测试A11", subPerson.getName()); + assertEquals("11213232", subPerson.getOpenid()); } @Test @@ -116,10 +118,10 @@ public class ConvertToBeanTest { caseInsensitiveMap.put("Jerry", 2); caseInsensitiveMap.put("tom", 3); - Map map = ConvertUtil.toMap(String.class, String.class, caseInsensitiveMap); - Assertions.assertEquals("2", map.get("jerry")); - Assertions.assertEquals("2", map.get("Jerry")); - Assertions.assertEquals("3", map.get("tom")); + final Map map = ConvertUtil.toMap(String.class, String.class, caseInsensitiveMap); + assertEquals("2", map.get("jerry")); + assertEquals("2", map.get("Jerry")); + assertEquals("3", map.get("tom")); } @Test public void beanToSpecifyMapTest() { @@ -129,9 +131,9 @@ public class ConvertToBeanTest { person.setName("测试A11"); person.setSubName("sub名字"); - Map map = ConvertUtil.toMap(LinkedHashMap.class, String.class, String.class, person); - Assertions.assertEquals("测试A11", map.get("name")); - Assertions.assertEquals("14", map.get("age")); - Assertions.assertEquals("11213232", map.get("openid")); + final Map map = ConvertUtil.toMap(LinkedHashMap.class, String.class, String.class, person); + assertEquals("测试A11", map.get("name")); + assertEquals("14", map.get("age")); + assertEquals("11213232", map.get("openid")); } }