反射

getSuperclass()/getGenericSuperclass()和getInterfaces()/getGenericInterfaces()

带Generic的表示:如果超类或者父接口是参数化类型,则返回的 Type 对象必须准确反映源代码中所使用的实际类型参数。(也就是说会返回父类泛型的具体类型的Class)如果以前未曾创建表示超类的参数化类型,则创建这个类型。

public static Class getSuperClassGenricType(Class clazz, int index){

Type genType = clazz.getGenericSuperclass();

if(!(genType instanceof ParameterizedType)){

return Object.class;

}

Type [] params = ((ParameterizedType)genType).getActualTypeArguments();

if(index >= params.length || index < 0){

return Object.class;

}

if(!(params[index] instanceof Class)){

return Object.class;

}

return (Class) params[index];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。