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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

langyue09

中级黑马

  • 黑马币:4

  • 帖子:51

  • 精华:0

© langyue09 中级黑马   /  2016-3-7 01:25  /  3219 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1黑马币
形象化解释下反射,感觉不好理解啊

10 个回复

倒序浏览
你追一个女神,先写情书再表白最后在一起,反射就相当于强上了!
回复 使用道具 举报
执剑人 发表于 2016-3-7 11:56
你追一个女神,先写情书再表白最后在一起,反射就相当于强上了!

这样子解释合适吗
回复 使用道具 举报
就是把类里面的所有东西都看成是一个对象,通过对应的对象就能对类中所有的东西进行操作,
回复 使用道具 举报
就这么多了吗
回复 使用道具 举报
  1. public class ReflectEx {

  2.     public static void main(String[] args)throws Exception {
  3.         Class cls = Class.forName("org.dennisit.reflect.entity.User");
  4.         Object obj = cls.newInstance();       //创建User的对象
  5.         Field f = cls.getDeclaredField("test");    //获取test属性
  6.         f.setAccessible(true);                    //打开私有属性test的访问权限
  7.         f.set(obj, "zhangsan");                    //为test重新复制
  8.         System.out.println(f.get(obj));            //获取obj的test属性值
  9.         //根据方法名execute获取方法
  10.         java.lang.reflect.Method m = cls.getMethod("execute", String.class, int.class);
  11.         m.invoke(obj, "dennisit",23);            //调用execute方法
  12.     }
  13. }
复制代码



当你访问的方法,字段,函数,是私有的时候,需要“强暴它一下,就是设置setAccessible(true)”
回复 使用道具 举报
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。反射可以理解成映射。可以灵活的调用类和方法。
回复 使用道具 举报
反射意味着我就是超级管理员,是不是生成对象我不管,我就是要用你类里的方法,得到你类里的变量数据,,,,,,别跟我扯别的权限什么的,我就是用了,怎么滴.............
回复 使用道具 举报
yehai 中级黑马 2016-3-16 11:49:52
9#
以前我们是创建类,然后创建对象,然后用对象去调用方法,反射就相当于反过来用,通过获得类的字节码文件,用字节码文件获得文件里的成员
回复 使用道具 举报
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制
回复 使用道具 举报
我的理解:反射是通过类的字节码对象去访问类的所有成员;这就相当于现实中,我军想要知道敌人的情报,直接问敌人要,敌人肯定是不会告诉我们的.但是我们收收买了敌人当中掌握所有核心机密的人,同过他我们就可以得到任何想要的情报.而敌人内部当他是自己人,对他充分信任,不会怀疑.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马