黑马程序员技术交流社区

标题: 关于反射部分的心得 [打印本页]

作者: huangjinlangzi    时间: 2015-6-12 10:51
标题: 关于反射部分的心得
我觉的对于反射部分只要弄懂以下几个步骤上就可以了:
    1、 获取类的Class对象,有三种方法;
          1)、Class clazz  = Class.forName(完整类名); 比较常用
          2)、Class clazz = 类名.class;
          3)、Object obj = new 类名();
                 Class clazz = obj.class;
    2、实例化指定类,获取对象
         1)、指定类有空参数构造函数
                 Object obj  = clazz.newInstance();
         2)、指定类无空参数构造函数
                 //先反射出构造函数
                 Constructor con = clazz.getConstructor(参数列表.class)
                 Object obj = con.newInstance(参数列表);
         3)、反射成员变量
                  Field field= clazz.getField(变量名);
                  Field field = clazz.getDeclaredField(变量名); 获取本类中的私有变量
                  field.setAccessible(true); //暴力反射,反射出私有变量
                  field.get(obj);

          4)、反射成员方法
                  Method method = clazz.getMethod(方法名,参数列表.class);
                  Method method = clazz.getDeclaredMethod(方法名,参数列表.class);
                  method.setAccessible(true);
                  method.invoke(obj,参数列表);
作者: huangjinlangzi    时间: 2015-6-12 10:55
我觉的对于反射部分只要弄懂以下几个步骤上就可以了:
    1、 获取类的Class对象,有三种方法;
          1)、Class clazz  = Class.forName(完整类名); 比较常用
          2)、Class clazz = 类名.class;
          3)、Object obj = new 类名();
                 Class clazz = obj.class;
    2、实例化指定类,获取对象
         1)、指定类有空参数构造函数
                 Object obj  = clazz.newInstance();
         2)、指定类无空参数构造函数
                 //先反射出构造函数
                 Constructor con = clazz.getConstructor(参数列表.class)
                 Object obj = con.newInstance(参数列表);
   3、反射成员变量
                  Field field= clazz.getField(变量名);
                  Field field = clazz.getDeclaredField(变量名); 获取本类中的私有变量
                  field.setAccessible(true); //暴力反射,反射出私有变量
                  field.get(obj);

    4、反射成员方法
                  Method method = clazz.getMethod(方法名,参数列表.class);
                  Method method = clazz.getDeclaredMethod(方法名,参数列表.class);
                  method.setAccessible(true);
                  method.invoke(obj,参数列表);
之前排版有点小错误,抱歉!

作者: itheima_llt    时间: 2015-6-12 11:36
总结的很好啊,加点示例就更专业了,可以做博客了
作者: hi潘    时间: 2015-6-12 21:28
讲的挺详细的,复习了




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