- 今天学习proxy代理,感觉很难,因为不能看源码Proxy.newProxyInstance()方法理解起来很难,所以就试
- 了又尝试,将我自己的理解写下来:
- Object java.lang.reflect.Proxy.newProxyInstance(ClassLoader loader, Class<?>[] interfaces,
- InvocationHandler h) throws IllegalArgumentException
- 使用这个方法,目的是将返回值转换为接口的对象。这样就实现了代理
- 第一个参数"ClassLoader loader," 要代理的那个已经实现接口的类,就用那个类的类
- 名..class.getClassLoader(),我们使用代理的目的就是为了返回一个这个类已经实现了的接口的对象
- 第二个参数" Class<?>[] interfaces"用这类的类名.class.getInterFaces()。
- 第三个参数 实现 InvocationHandler接口的类的对象。
- 这个类中的方法如下:(我的例子)
- public class proxyDog implements InvocationHandler {
- Dog target;
- public Dog getTarget() {
- return target;
- }
- public void setTarget(Dog target) {
- this.target = target;
- }
- public Object invoke(Object proxy, Method method, Object[] args)
- throws Throwable {
- // TODO Auto-generated method stub
- System.out.println("开始拦截");
- Object obj = method.invoke(target, args);
- System.out.println("拦截后");
- return obj;
- }
- }
- Dog 类就是第一个参数中实现接口的那个类
proxy代理学习笔记
最新推荐文章于 2023-01-08 22:38:14 发布