美文网首页
反射和动态代理中的方法调用

反射和动态代理中的方法调用

作者: 可乐高 | 来源:发表于2017-08-07 16:43 被阅读0次

有些基础知识,时间久了也会忘的,就像JAVA反射和动态代理中的方法调用,一直不用的话就会混乱,其实很简单,反射只有一个对象,而代理肯定会有两个对象,那么对于一个对象反射方法调用是对对象进行字节码层面的特殊执行方式,所以执行的是method.invoke(originalObj,args);而动态代理则是在静态代理的基础上为了减少硬编码而进行的优化,所以方法调用的目标是"静态调用代理对象的方法一样调用原始对象方法(记住是像,而不是是,因为代理类除了加上自定义的处理内容,比如前后处理逻辑外不能也没必要把原对象方法体重新实现一遍)",而实现这个效果就是靠的InvocationHandler接口(JDK自带)的实现类(代理类)的invoke(originalObj,originalObjMethod,args)方法了,而代理对象从哪里来,并不是new 出来的,而是使用Proxy类(JDK自带)的静态方法newProxyInstance(ClassLoader loader, Class

[] interfaces,InvocationHandler h)生成出来的(可以看到主要是通过原始对象的接口和自定义的InvocationHandler的实现类(持有一个originalObj实例通过反射调用,而RPC的原理则是反射的对象是网络序列化反序列化传输获取)的回调invoke方法).

参考:http://www.cnblogs.com/jqyp/archive/2010/08/20/1805041.html

相关文章

  • 反射和动态代理中的方法调用

    有些基础知识,时间久了也会忘的,就像JAVA反射和动态代理中的方法调用,一直不用的话就会混乱,其实很简单,反射只有...

  • Java动态代理

    java动态代理 先看Method反射,调用getDeclaredMethod查找方法;invoke执行方法,返回...

  • 有疑问的地方

    反射和动态代理:java动态代理可以在不改变被调用对象源码的前提下,在被调用方法前后增加自己的操作,极大地降低了模...

  • AOP

    1、jdk动态代理 jdk动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用Invocati...

  • Java 反射 之 动态代理(InvocationHandler

    动态代理: 通过反射的方式调用真实对象的方法静态代理: 真实对象显式地方法调用 这样理解还是很抽象,还是具体实例代...

  • Class对象的一些概念

    最近在写动态代理的demo,反射是动态代理的核心实现,而反射是通过jvm中的class对象在运行期动态调用任意一个...

  • 14.动态代理

    代理模式 java动态代理:利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandle...

  • 从注解动态代理理解Retrofit对OkHttp的封装,手写实现

    仅实现Retrofit中的注解和动态代理 大概流程:1.通过动态代理实例化接口2.每调用一个方法都会调用到动态代理...

  • 反射+动态代理

    反射+动态代理反射:以类名得到该类的属性名,属性值,方法名,方法的默认返回值,然后调用set/invoke等方法来...

  • Java 代理

    静态代理 动态代理 动态代理, 日志切片使用反射获得方法 动态代理, 自定义注解(对注解的方法,使用动态代理添加切...

网友评论

      本文标题:反射和动态代理中的方法调用

      本文链接:https://www.haomeiwen.com/subject/iuqalxtx.html