首页 > 编程 > Java > 正文

java动态代理实现机制

2019-11-08 19:48:52
字体:
来源:转载
供稿:网友
java动态代理是利用反射机制来动态实现代理类的字节码,无需程序员手工编写代理代码,可以简化编程工作和提高软件的可扩展性啊; java动态代理的实现主要依靠java.lang.reflect包中InvocationHandler接口和PRoxy类; Proxy类主要方法: getProxyClass()负责创建动态代理类,其完整方法如下: public static Class<?> getProxyClass(ClassLoader loader,Class<?>... interfaces) newProxyInstance()方法负责创建动态代理类的实例,如下: public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) loader为指定的类加载器,interfaces为动态代理类需要实现的接口,h为与动态代理类关联的InvocationHandler对象; Proxy创建的动态代理类具有以下特点 1. 动态代理类是public,final和非抽象的; 2. 动态代理类的名称是以"$Proxy"开头的; 3. 动态代理类实现getProxyClass()和newProxyInstance()方法参数interfaces中指定的所有接口 4. 动态代理类都实现了java.lang.reflect.Proxy; 5. Proxy类的isProxyClass()方法可以用来判断参数所代表的类是否是动态代理类; 6. 动态代理类都有一个public的构造方法,该构造方法的参数是InvocationHandler的实例; Proxy创建的动态代理类实例具有以下特点: 1. 动态代理类的实例foo,同时动态代理类实现了Foo接口,那么foo instanceof Foo 判断为true,同时foo可以强制转换为Foo; 2. 每个动态代理类都关联一个InvocationHandler对象,可以通过Proxy类的静态getInvocationHandler(Object proxy)方法,获得参数proxy指定的动态代理类实例所关联的InvocationHandler; 3. 当程序调用动态代理类实例的menthod()方法时,该方法会调用关联InvocationHandler的invoke()方法;
上一篇:java二

下一篇:JAVA蓝桥杯(3)猜算式

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表