黑马程序员技术交流社区

标题: 【成都校区】 [打印本页]

作者: 醒醒    时间: 2019-4-17 00:27
标题: 【成都校区】
反射

获得类的Class对象

- 类的class的属性
- 对象的getClass()
- 利用Class.forName(全路径)

利用反射获得构造函数对象

- 获得单个指定参数列表的公共构造函数对象:getConstructor(Class<?> ... t)
- 获得单个指定参数列表的构造函数对象:getDeclaredConstructor(Class<?> ... t)
  -> 得到Constructord对象
  ->利用上面得到Constructord对象创建指定类型的对象:
     con.newInstance(Object ...)
  ->如果是私有构造方法需要取消权限的检查
  con.setAccessible(true)

利用反射操作成员变量(前提需要依赖对象 obj)

- 获得指定名称的单个公共的成员变量:getFiled(String name);
- 获得指定名称的单个成员变量:getDeclaredFiled(String name);
- 给成员变量赋值:xxxFiled.set(obj,value) ->给某个对象的当前属性赋值为value
- 获得某个对象当前属性的值:xxxFiled.get(obj);
- 取消访问权限检查:xxxField.setAccessible(true);

利用反射执行成员方法(前提需要依赖对象 obj)

- 获得指定方法名称和参数列表的单个公共方法:getMethod(String name,Class<?> ... t);
- 获得指定名分名称和参数列表的单个方法:getDeclaredMethod(String name,Class<?> ... t);
- 调用方法: Object o = method.invoke(obj,参数列表)
- 设置访问检查:method.setAccessible(true);





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2