Java动态代理是什么及怎么实现(java,开发技术)

时间:2024-05-03 01:56:35 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    Java%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86%E6%98%AF%E4%BB%80%E4%B9%88%E5%8F%8A%E6%80%8E%E4%B9%88%E5%AE%9E%E7%8E%B0

接下来,请跟着小编一起来学习吧!

当我们需要调用某个类(具体实现类)的方法时,不直接创建该类的对象,而是拿到该类的代理类对象,通过代理对象,调用具体实现类的功能。具体实现类和代理类都实现同样的接口,并且代理类持有实现类的对象。这样做在调用端和具体实现端,做了一层隔离,避免直接打交道。

代理模式在现实中也有很多类似的例子,比如我们买房租房,都得通过中介,这个中介就相当于代理。

1)定义接口:

2)具体实现类:

3)代理类:

4)客户端调用:

动态代理分析:

1)IHouse iHouse = (IHouse) Proxy.newProxyInstance();创建动态代理对象,

有三个参数:

1.ClassLoader 类加载器/p><p>2.被代理接口的Class类,</p><p>3.InvocationHandler接口实现类</p><p>2)拿到iHouse动态代理后,调用接口的方法iHouse.sallHouse();</p><p>这个方法一被调用,就会执行InvocationHandler类中invoke方法。</p><blockquote><p>@Override</p

public Object invoke(Object o, Method method, Object[] objects) throws Throwable {

//通过反射调用被代理对象的方法

return method.invoke(andy, objects);

}

invoke方法有三个参数:

method,就是代理类调用的方法名(sallHouse)

objects,就是代理类调用方法时传递的参数。

Object obj = method.invoke(andy, objects); 通过反射机制 调用andy对象,具体实现者中对应的方法。

他的返回值,可以在代理对象调用接口时接收,是什么类型,就返回什么类型。Retrofit就是这样做的

本文:Java动态代理是什么及怎么实现的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:C#位运算符怎么使用下一篇:

19 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18