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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 欧阳超 黑马帝   /  2011-10-10 14:06  /  3638 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

反射机制一般都在什么情况下使用

5 个回复

倒序浏览
反射提供了对当前未知类的动态灵活的处理能力,类名加上.class就可以得到该类所有的属性和方法,得到这些方法或属性后,可以调用指定对象上的这个方法,也可以给指定对象上的这个属性赋值。还有是private的成员变量,通过反射可以进行访问和修改,这是强制反射

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
做框架的时候,你看SSH三大框架就知道了,大量用到反射技术,在不破坏类的情况深入里面进去方法改写.
还有也可以用到反编译上,因为你拥有字节码就可以使用反射.

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
得到一个类的Class对象,然后通过Class对象来解析类的结构,比如说得到这个类有什么方法,有什么属性。得到这些方法或属性后,可以调用指定对象上的这个方法,也可以给指定对象上的这个属性赋值。
eg:
T t = new T();
Class c = t.getClass(); //得到T这个类的class对象
Method m = c.getDeclaredMethod("getName"); //得到getName方法
m.invoke(t); //调用getName方法,并且将this指向t这个对象

评分

参与人数 1技术分 +2 黑马币 +1 收起 理由
admin + 2 + 1

查看全部评分

回复 使用道具 举报
反射能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。
反射不单单指反射本身,还包括对反射结果所采取的措施。所有采用反射机制的系统(即反射系统)都希望使系统的实现更开放。可以说,实现了反射机制的系统都具有开放性,但具有开放性的系统并不一定采用了反射机制,开放性是反射系统的必要条件。一般来说,反射系统除了满足开放性条件外还必须满足原因连接(Causally-connected)。所谓原因连接是指对反射系统自描述的改变能够立即反映到系统底层的实际状态和行为上的情况,反之亦然。开放性和原因连接是反射系统的两大应用原因。

Java中,反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接。反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM中的类的内部信息,而不是源代码中选定的类协作的代码。这使反射成为构建灵活的应用的主要工具。

评分

参与人数 1技术分 +2 黑马币 +2 收起 理由
admin + 2 + 2

查看全部评分

回复 使用道具 举报
本帖最后由 张洋铭 于 2011-10-10 15:54 编辑

首先所有反射的爹都是Class, 有了Class类我们能做这么几个事情:
1. 可以得到一个对象所属类的信息:其中包括类的包和类的父类,以及该类实施的接口。它还包括该类定义的构造函数、字段和方法的详细信息。

2. 可以通过构造函数的调用创建新的类对象:给你个小代码
Class[] types = new Class[] { String.class, String.class };
Constructor cons = TwoString.class.getConstructor(types);
Object[] args = new Object[] { "a", "b" };
TwoString ts = cons.newInstance(args);

3. 可以通过反射的方法对对象中的字段赋值, 当然也可以增加新的字段

4. 可以用反射调用方法,来突破某些方法的泛型限制,希望有帮助

评分

参与人数 1技术分 +1 黑马币 +4 收起 理由
wangfayin + 1 + 4 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马