@SuppressWarnings("unchecked")
public static <T> Class[] resolveParameterizedClass(
Class<T> genericClass, Class<? extends T> descendantClass)
throws IllegalArgumentException, IllegalStateException {
if (genericClass == null) {
throw new IllegalArgumentException(
"Argument 'genericsClass' ("
+ Class.class.getName() + ") is null");
}
if (descendantClass == null) {
throw new IllegalArgumentException(
"Argument 'descendantClass'("
+ Class.class.getName() + ") is null");
}
List<ParameterizedType> ancestorTypeList =
getAncestorTypeList(genericClass, descendantClass);
ParameterizedType parameterizedType =
ancestorTypeList.get(ancestorTypeList.size() - 1);
Type[] actualTypes = parameterizedType.getActualTypeArguments();
Class[] actualClasses = new Class[actualTypes.length];
for (int i = 0; i < actualTypes.length; i++) {
actualClasses[i] =
resolveTypeVariable(actualTypes[i], ancestorTypeList);
}
return actualClasses;
}
解析参数化类方法实现
本文详细阐述了一个用于解析参数化类的方法实现过程,包括如何处理泛型类和子类,以及通过遍历祖先类型列表获取实际类型参数,最终返回实际类数组。
1085

被折叠的 条评论
为什么被折叠?



