A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© huangjinlangzi 中级黑马   /  2015-6-12 10:51  /  491 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

我觉的对于反射部分只要弄懂以下几个步骤上就可以了:
    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,参数列表);

3 个回复

倒序浏览
我觉的对于反射部分只要弄懂以下几个步骤上就可以了:
    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,参数列表);
之前排版有点小错误,抱歉!
回复 使用道具 举报
总结的很好啊,加点示例就更专业了,可以做博客了
回复 使用道具 举报
讲的挺详细的,复习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马