1
0
mirror of https://gitee.com/dromara/hutool.git synced 2025-04-05 17:37:59 +08:00

修复JsonUtil.toBean泛型数组类型丢失问题(pr#3876@Github)

This commit is contained in:
Looly 2025-03-03 12:05:32 +08:00
parent bb0eb91087
commit 9b19bf84a8
3 changed files with 12 additions and 2 deletions
hutool-core/src
main/java/org/dromara/hutool/core/reflect
test/java/org/dromara/hutool/core/reflect
hutool-json/src/test/java/org/dromara/hutool/json/issues

View File

@ -418,7 +418,7 @@ public class TypeUtil {
* 2. 泛型变量类似于T
* </pre>
*
* @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;
}
}
// 没有需要替换的泛型变量原样输出

View File

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

View File

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