java动态代理实现机制

  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()方法;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值