博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java动态代理机制
阅读量:5938 次
发布时间:2019-06-19

本文共 1620 字,大约阅读时间需要 5 分钟。

需要用到的类和接口:

  1. 类:Proxy
  2. 接口:InvocationHandler

InvocationHandler:

  1. 接口方法:
    Object invoke(Object proxy, Method method, Object[] args) throws Throwable
  2. 方法参数:
    Object proxy:代理调用方法的实例Method method:执行的方法Object[] args:执行方法时的参数对象数组
  3. 返回值:返回代理对象执行方法后的结果
  4. 作用:
    • 每一个动态代理类都必须要实现InvocationHandler这个接口
    • 每个代理类的实例都关联到了一个handler
    • 当我们通过代理对象调用一个方法的时候,这个方法的调用就会被转发为由InvocationHandler这个接口的 invoke 方法来进行调用
  5. JDK注释(部分截取):
    @param   proxy the proxy instance that the method was invoked on@param   method the {@code Method} instance corresponding to the interface method invoked on the proxy instance. @param   args an array of objects containing the values of the arguments passed in the method invocation on the proxy instance, or {@code null}          if interface method takes no arguments.@return  the value to return from the method invocation on the proxy instance.

Proxy:

  1. 用到的方法:
    public static Object newProxyInstance(ClassLoader loader, Class
    [] interfaces, InvocationHandler h) throws IllegalArgumentException
  2. 方法参数:
    ClassLoader loader:ClassLoader对象,用于对生成的代理对象进行加载Class
    [] interfaces:Interface对象的数组,代理对象实现的方法InvocationHandler h:InvocationHandler对象,用指定的加载器加载,并且实现了指定的接口的InvocationHandler的代理实例 
  3. 作用:得到一个动态的代理对象
  4. JDK注释:
    @param   loader the class loader to define the proxy class@param   interfaces the list of interfaces for the proxy class to implement@param   h the invocation handler to dispatch method invocations to@return  a proxy instance with the specified invocation handler of a proxy class that is defined by the specified class loader and that implements the specified interfaces

     

转载于:https://www.cnblogs.com/angryorange/p/5252371.html

你可能感兴趣的文章
javap使用
查看>>
php gettext
查看>>
Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份
查看>>
练习方法--刻意练习
查看>>
多进程
查看>>
Java方式 MySQL数据库连接
查看>>
MATLAB2012 licence失效解决方法
查看>>
Android ListView初始化将实例化多少个item
查看>>
[LeetCode] Factorial Trailing Zeroes 阶乘末尾0
查看>>
消除字号标签<h1><h2><h3>的自动换行
查看>>
关于ListView的一些不常用到的属性
查看>>
201521123040《Java程序设计》第13周学习总结
查看>>
Mybatis的分页插件com.github.pagehelper
查看>>
Rand工具类
查看>>
iOS边练边学--cocoaPods管理第三方框架--命令行方式实现
查看>>
线程学习笔记(一)
查看>>
黄聪:bootstrap的模态框modal插件在苹果iOS Safari下光标偏离问题解决方案
查看>>
黄聪:在Windows下搭建***服务器
查看>>
git常用命令
查看>>
[Android学习笔记]EditText的使用
查看>>