反射
反射
神奇海螺反射
获取Class对象的方式
1 使用实例化后的class对象引用调用Object的getClass()
2使用.Class 静态属性获取Class类对象
3 使用Class类下的forName(String Classname)获取Class类对象,参数为包名加类名
Constructors为构造方法对象
Field为成员变量对象
Method为普通方法对象
newInstance(Object…initargs) 对Constructor反射回来的构造方法实例化对象。
getDeclaredConstructors() 返回Constructors对象的一个数组,这些对象反映此Class对象表示的类声明的所有构造方法
getConstructors() 返回Constructors对象的一个数组,这些对象反映此Class对象表示的类声明的所有公共(public)构造方法
getConstructor(Class>...parameterTypes) 返回Constructors对象,它反映此Class对象所表示的类的指定公共(public)构造方法
getDeclaredConstructor(Class>…parameterTypes) 返回Constructors对象,它反映此Class对象所表示的类或接口的指定构造方法
getFields() 返回一个Field数组,包含Class对象中所有公共(public)成员变量
getDeclaredFields() 返回一个Field数组,包含Class对象中所有成员变量
getField(String fieldName) 返回一个Field,包含Class对象中指定的公共(public)成员变量
getDeclaredField(String fieldName) 返回一个Field,包含Class对象中指定的成员变量
1getMethods() 返回一个Method数组,包含Class对象中所有公共(public)方法
getDeclaredMethods() 返回一个Method数组,包含Class对象中所有方法
getMethod(String Name,Class<> ) 返回一个Method,包含Class对象中指定的公共(public)方法
getDeclaredMethod(String Name,Class<> ) 返回一个Method,包含Class对象中指定的方法
获取公共的方法或构造方法或成员变量时会返回本类以及父类的所有公共的方法或构造方法或成员变量。
获取所有的方法或构造方法或成员变量时只会返回本类所有的方法或构造方法或成员变量。
Method下的方法invoke(Object obj,Object…args)调用底层方法。
setAccessible() 启用或禁用访问安全检查的开关。true指取消访问安全检查,false指启用访问安全检查,默认值为false。(例如:检查你使用的方法是否为可用方法,如果是private则不可用,是public则可用)。访问安全检查比较耗时,反射执行中可关闭访问安全检查提升效率。