getParameterizedType

This commit is contained in:
redkale
2023-10-10 15:48:05 +08:00
parent 71a0a69bd3
commit a5e3a277ba

View File

@@ -406,10 +406,17 @@ public abstract class TypeToken<T> {
private static Type getType(Map<Type, Type> map, Type type) {
Type one = map.get(type);
if (one == null) {
return type;
return getParameterizedType(map, type);
}
if (one instanceof ParameterizedType && !isClassType(one)) {
ParameterizedType pt = (ParameterizedType) one;
return getParameterizedType(map, one);
}
return getType(map, one);
}
private static Type getParameterizedType(Map<Type, Type> map, Type type) {
if (type instanceof ParameterizedType && !isClassType(type)) {
ParameterizedType pt = (ParameterizedType) type;
Type owner = getType(map, pt.getOwnerType());
if (owner == null || isClassType(owner)) {
Type raw = getType(map, pt.getRawType());
@@ -430,7 +437,7 @@ public abstract class TypeToken<T> {
}
}
}
return getType(map, one);
return type;
}
private static Map<Type, Type> parseType(Map<Type, Type> map, Class clzz) {