Field、Method、Constructor、Supperclass、实现的Interface、Annotation、方法的Exception信息、内部类
先获取类的Class实例

获取实现的接口

  1. public Class<?>[] getInterfaces()
  2. 获取此对象所表示的类或接口实现的接口

获取所继承的父类

  1. public Class<? Super T> getSuperclass()
  2. 返回此Class所表示的实体(类、接口、基本数据类型)的父类的Class

获取全部的构造器

  • public Constructor[] getConstructors()

返回此Class对象所表示的类的所有public构造器

  • public Constructor[] getDeclaredConstructors()

返回此Class对象表示的类中声明的所有构造器,包括私有的

  1. Constructor类中:
  2. 取得修饰符:public int getModifiers()
  3. 取得方法名称:public String getName()
  4. 取得参数的类型:public Class<?>[] getParameterTypes()

获取全部的方法

  • public Method[] getDeclaredMethods()

返回此Class对象所表示的类或接口的全部方法

  • public Method[] getMethods() 返回此Class对象所表示的类或接口的public方法
  1. Method类中:
  2. * public Class<?> getReturnType() 取得方法全部的返回值
  3. * public Class<?>[] getParameterTypes() 获取方法全部的参数
  4. * public int getModifiers() 取得方法修饰符
  5. * public Class<?>[] getExceptionTypes() 获取方法异常信息

获取全部的属性(Field)

  • public Field[] getFields()

返回此Class对象所表示的类或接口的public的Field

  • public Field[] getDeclaredFields()

返回此Class对象所表示的类或接口的全部Field,包括private修饰的属性

  1. Field类中:
  2. * public int getModifiers() 以整数形式返回此Field的修饰符
  3. * public Class<?> getType() 返回Field的属性类型
  4. * public String getName() 返回Field名称

获取注解(Annotation)

  • public Annotation[] getAnnotations() 获取此Class对象所表示的类或接口的public修饰的注解
  • public Annotation[] getDeclaredAnnotations() 获取此Class对象所表示的类或接口的全部注解

泛型相关

  • Type getGenericSuperclass() 获取带泛型的父类
  • 获取父类的泛型
  1. Class clazz = Person.class;
  2. Type type1 = clazz.getGenericSuperclass();
  3. ParameterizedType parameterizedType = (ParameterizedType) type1;
  4. Type[] args = parameterizedType.getActualTypeArguments(); //获取实际的泛型类型参数数组
  5. Class firstArg = (Class) args[0];
  6. System.out.println(firstArg.getName());

获取类所在的包

public Package getPackage()

获取内部类

public Class[] getDeclaredClasses()

数字形式修饰符转String修饰符

  1. int i = f.getModifiers();
  2. String modifier = Modifier.toString(i);

示例
Reflection2Test test1 - test10