修复ClassUtil.getTypeArgument() 获取泛型存在null问题

This commit is contained in:
Looly 2024-03-18 11:53:39 +08:00
parent b5cd26822e
commit cc6234bd27
2 changed files with 37 additions and 2 deletions

View File

@ -343,8 +343,9 @@ public class TypeUtil {
final Type[] genericInterfaces = clazz.getGenericInterfaces();
if (ArrayUtil.isNotEmpty(genericInterfaces)) {
for (final Type genericInterface : genericInterfaces) {
if (genericInterface instanceof ParameterizedType) {
result.add((ParameterizedType) genericInterface);
final ParameterizedType parameterizedType = toParameterizedType(genericInterface);
if(null != parameterizedType){
result.add(parameterizedType);
}
}
}

View File

@ -0,0 +1,34 @@
package org.dromara.hutool.core.reflect;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.lang.reflect.Type;
import java.util.function.Function;
public class Issue3516Test {
@Test
public void getTypeArgumentTest() {
final Type typeArgument = TypeUtil.getTypeArgument(Demo.class, 0);
Assertions.assertEquals(B.class, typeArgument);
}
static class Demo implements A2B{
@Override
public A apply(final B b) {
return new A();
}
}
static class A {
private String name;
}
static class B {
private String name;
}
interface A2B extends Function<B, A> {
}
}