/**
* 根据类型提取所有关联参数
*/
public static void getAllParameter(Type type, List<Class<?>> list) {
Class<?> c1 = TypeUtil.getClass(type);
if (type instanceof ParameterizedType) {
Type[] ts = ((ParameterizedType) type).getActualTypeArguments();
list.add(c1);
for (Type tp : ts) {
getAllParameter(tp, list);
}
} else {
list.add(c1);
}
}
public static void main(String[] args) throws NoSuchFieldException {
Field field = User.class.getDeclaredField("list");
Type fieldGenericType = field.getGenericType();
ArrayList<Class<?>> list = new ArrayList<>();
ClasUtil.getAllParameter(fieldGenericType, list);
StringBuilder param = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
String simpleName = list.get(i).getSimpleName();
if (i >= 1) {
param.append("<");
}
param.append(simpleName);
}
for (int i = list.size() - 1; i > 0; i--) {
param.append(">");
}
System.out.println("type = " + param.toString());
}
/**
* private CommonResp<List<PageResult<List<Primitive>>>> list;
* <p>
* 返回:type = CommonResp<List<PageResult<List<Primitive>>>>
*/
public static String getTypeString(ArrayList<Class<?>> list) {
StringBuilder param = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
String simpleName = list.get(i).getSimpleName();
if (i >= 1) {
param.append("<");
}
param.append(simpleName);
}
for (int i = list.size() - 1; i > 0; i--) {
param.append(">");
}
return param.toString();
}