java 动态代理 demo 实现原理 参数理解(三)

动态代理两个重要的组成:   Proxy   与   InvocationHandler

Hello1  hello = (Hello1) Proxy.newProxyInstance(Hello.class.getClassLoader(),new Class[]{Hello1.class},new HelloProxy<HelloWorld>(new HelloWorld()));

public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces, InvocationHandler h)

第一个类加载器,  目前觉得这个理解的不到位,因为要生成一个在内存中的代理对象,需要一个类加载器器,平常

第二个参数,被代理对象的所有接口,假如 hello 实现了 Hello 、 Hello1  这两个接口,这个参数 就变数,两个接口组成的 class数组, 参数的目的是: 本质上其实是多态,  这样

Proxy.newProxyInstance(hello.getClass().getClassLoader(), hello.getClass().getInterfaces(), this);  这个方法可以 强制转换成Hello  也可以是 Hello1

第三个参数  这个参数 要实现 InvocationHandler 接口

 

InvocationHandler   要实现的方法如下:

 
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

三个参数: proxy  这个感觉没有用上

这样的是第二个参数:  method  这个是被代理类的接口层的实现方法的Class 对象,比如有个方法 sayHello 这个就是sayHello 的class 对象,然后通过反射机制 去调用这个方法

第三个参数  就是方法使用到的参数

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值