通过反射调用类的完整结 实现的全部接口 public Class?[] getInterfaces() 确定此对象所表示的类或接口实现的接口。 所继承的父类 public Class? Super T getSuperclass() 返回表示此 Class 所表示的实体
通过反射调用类的完整结
实现的全部接口
public Class<?>[] getInterfaces()
确定此对象所表示的类或接口实现的接口。所继承的父类
public Class<? Super T> getSuperclass()
返回表示此 Class 所表示的实体(类、接口、基本类型)的父类的 Class。- 全部的构造器
- public Constructor
[] getConstructors()
返回此 Class 对象所表示的类的所有public构造方法。 public Constructor
[] getDeclaredConstructors()
返回此 Class 对象表示的类声明的所有构造方法。- Constructor类中:
- 取得修饰符: public int getModifiers();
- 取得方法名称: public String getName();
- 取得参数的类型:public Class<?>[] getParameterTypes();
4.全部的方法
- public Method[] getDeclaredMethods()
返回此Class对象所表示的类或接口的全部方法 - public Method[] getMethods()
返回此Class对象所表示的类或接口的public的方法
Method run = clazz.getMethod("run"); System.out.println(run.getReturnType());//void
- Method类中:
- public Class<?> getReturnType()取得全部的返回值
- public Class<?>[] getParameterTypes()取得全部的参数
- public int getModifiers()取得修饰符
- public Class<?>[] getExceptionTypes()取得异常信息
- 全部的Field
- public Field[] getFields()
返回此Class对象所表示的类或接口的public的Field。 - public Field[] getDeclaredFields()
返回此Class对象所表示的类或接口的全部Field。
Field name = clazz.getDeclaredField("name");
Field方法中:
public int getModifiers() 以整数形式返回此Field的修饰符
- public Class<?> getType() 得到Field的属性类型
public String getName() 返回Field的名称。
- Annotation相关(注解)
- get Annotation(Class
annotationClass) - getDeclaredAnnotations()
- 泛型相关
- 获取父类泛型类型:Type getGenericSuperclass()
- 泛型类型:ParameterizedType
- 获取实际的泛型类型参数数组:getActualTypeArguments()
- 类所在的包
Package getPackage()
package com.test; import org.junit.Test; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Arrays; import static sun.misc.PostVMInitHook.run; public class ClassTest { @Test public void newTest() throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchFieldException, NoSuchMethodException { Class clazz = Class.forName("com.test.Person"); Object person = clazz.newInstance(); Field name = clazz.getDeclaredField("name"); name.setAccessible(true); name.set(person,"lisi"); System.out.println(person); //哪个类加载器加载 System.out.println(clazz.getClassLoader());//[email protected] System.out.println(Arrays.toString(clazz.getInterfaces()));//[interface com.test.Per] System.out.println(clazz.getSuperclass());//class com.test.PerC Method run = clazz.getMethod("run"); System.out.println(run.getReturnType());//void } } interface Per{ void run(); } class PerC{ protected String sex; } class Person extends PerC implements Per{ private String name; private String sex; public Person() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } @Override public void run() { System.out.println(); } }