/**反射
* Class.forName("类名。。。。");
* 私有变量访问需要setAccessible(true),其他不需要
*
*getSuperclass 返回直接继承的父类(由于编译擦除,没有显示泛型参数)
* getInterfaces 返回实现接口信息的Class数组,不包含泛型信息
*getGenericSuperclass 返回直接继承的父类(包含泛型参数)
* getGenericInterfaces 返回实现接口信息的Type数组,包含泛型信息
* getName 获取类名
*getModifiers 获取类修饰符(Modifier.isPublic(返回的int类型)判断修饰符)
* getPackage 获取包信息
* getConstructors 获取构造方法
* getParameterTypes 获取构造函数的参数
* newInstance 初始化对象
* getReturnType获取返回的类型
**/
* //解析泛型的类型,可以用来json解析
public static Class<?> analysisClazzInfo(Object object) {
Type genType = object.getClass().getGenericSuperclass();
Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
return (Class<?>) params[0];
}
//获取返回类型
Type returnType = method.getGenericReturnType();
if(returnType instanceof ParameterizedType){
ParameterizedType type = (ParameterizedType) returnType;
Type[] typeArguments = type.getActualTypeArguments();
for(Type typeArgument : typeArguments){
Class typeArgClass = (Class) typeArgument;
System.out.println("typeArgClass --->" + typeArgClass);
}
}
/* * getFields()获取成员变量
* getDeclaredField()获取所有成员
* getType() 获取成员变量类型
* Class.getDeclaredField(String name)或者Class.getDeclaredFields()才能获取到私有变量
* getAnnotations() 访问类注解信息
* getGenericReturnType() 泛型方法返回类型
*
*
*
*
*
*/