From 9b19bf84a8bdbe59ad03777d4499929d07aace58 Mon Sep 17 00:00:00 2001 From: Looly Date: Mon, 3 Mar 2025 12:05:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D`JsonUtil.toBean`=E6=B3=9B?= =?UTF-8?q?=E5=9E=8B=E6=95=B0=E7=BB=84=E7=B1=BB=E5=9E=8B=E4=B8=A2=E5=A4=B1?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=88pr#3876@Github=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/dromara/hutool/core/reflect/TypeUtil.java | 7 +++++-- .../org/dromara/hutool/core/reflect/ClassUtilTest.java | 5 +++++ .../java/org/dromara/hutool/json/issues/Issue3504Test.java | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/TypeUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/TypeUtil.java index 5d4e20587..4ec07ba0d 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/reflect/TypeUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/reflect/TypeUtil.java @@ -418,7 +418,7 @@ public class TypeUtil { * 2. 泛型变量,类似于T * * - * @param type 类 + * @param type 泛型类 * @param typeVariable 泛型变量,例如T等 * @return 实际类型,可能为Class等 */ @@ -431,7 +431,10 @@ public class TypeUtil { } // pr#3876 解决泛型数组泛型类型无法识别问题 if (typeVariable instanceof GenericArrayType) { - return ActualTypeMapperPool.getActualType(type, (GenericArrayType) typeVariable); + final Type actualType = ActualTypeMapperPool.getActualType(type, (GenericArrayType) typeVariable); + if(null != actualType){ + return actualType; + } } // 没有需要替换的泛型变量,原样输出 diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/reflect/ClassUtilTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/reflect/ClassUtilTest.java index 44bd340bf..11ea7bea5 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/reflect/ClassUtilTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/reflect/ClassUtilTest.java @@ -30,6 +30,11 @@ import java.util.Objects; */ class ClassUtilTest { + @Test + void forNameTest() { + Assertions.assertEquals(String.class, ClassUtil.forName("java.lang.String", false, null)); + } + @Test void testGetSuperClasses() { // if root is null diff --git a/hutool-json/src/test/java/org/dromara/hutool/json/issues/Issue3504Test.java b/hutool-json/src/test/java/org/dromara/hutool/json/issues/Issue3504Test.java index b2655d36e..07cf04722 100644 --- a/hutool-json/src/test/java/org/dromara/hutool/json/issues/Issue3504Test.java +++ b/hutool-json/src/test/java/org/dromara/hutool/json/issues/Issue3504Test.java @@ -42,6 +42,8 @@ public class Issue3504Test { jsonBean.setClasses(new Class[]{String.class}); final String jsonStr = JSONUtil.toJsonStr(jsonBean); + Assertions.assertEquals("{\"name\":\"test\",\"classes\":[\"java.lang.String\"]}", jsonStr); + final JsonBean bean = JSONUtil.toBean(jsonStr, JsonBean.class); Assertions.assertNotNull(bean); Assertions.assertEquals("test", bean.getName());