您的位置:首页 > 编程语言 > Java开发

黑马程序员-Java反射机制及JDK动态代理技术

2011-07-13 17:05 197 查看
Java反射是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifier(诸如public, static 等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于运行时改变fields内容或唤起methods。
Java反射机制容许程序在运行时加载、探知、使用编译期间完全未知的classes。
换言之,Java可以加载一个运行时才得知名称的class,获得其完整结构。

在Java中要想实现动态代理则必须要java.lang.reflect.InvocationHandler接口和java.lang.reflect.Proxy类地支持。
在InvocationHandler接口中定义了一个invoke()的方法,此方法有三个参数如下:
Object Proxy:被代理的对象
Method method :要调用的方法
Object args[] :方法调用时所需要的参数
Porxy类是专门完成代理的操作类,可以通过此类为一个或者多个接口动态的生成代理对象,该类中newProxyInstance()动态的生成代理对象,该方法有下面三个
参数:
ClassLoader loader:类加载器
Class<?> interface:得到全部的接口
InvocationHander h : 得到InvocationHander接口的实例
要想完成动态代理第一步必须定义一个InvocationHander接口的实现类。
public class MyInvocationHander implements InvocationHander{
public Object invoke(....){
..........
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: