getParameterizedType
This commit is contained in:
@@ -406,10 +406,17 @@ public abstract class TypeToken<T> {
|
|||||||
private static Type getType(Map<Type, Type> map, Type type) {
|
private static Type getType(Map<Type, Type> map, Type type) {
|
||||||
Type one = map.get(type);
|
Type one = map.get(type);
|
||||||
if (one == null) {
|
if (one == null) {
|
||||||
return type;
|
return getParameterizedType(map, type);
|
||||||
}
|
}
|
||||||
if (one instanceof ParameterizedType && !isClassType(one)) {
|
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());
|
Type owner = getType(map, pt.getOwnerType());
|
||||||
if (owner == null || isClassType(owner)) {
|
if (owner == null || isClassType(owner)) {
|
||||||
Type raw = getType(map, pt.getRawType());
|
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) {
|
private static Map<Type, Type> parseType(Map<Type, Type> map, Class clzz) {
|
||||||
|
|||||||
Reference in New Issue
Block a user