jdk动态代理
在jvm运行时生成一个代理对象,通过执行和代理对象关键的invoketionhandler对象的invoke方法,去执行真实对象的目标方法。
代理机制关键的一个接口(invoketionhandler)和一个类(proxy)。
整体流程是通过Proxy.newProxyInstanse(参数1,参数2,参数3)生成目标对象:
参数1:invoketionHander接口实现类对象实例.getClass.getClassLoader():类加载器;
参数2:目标对象实例.getClass.getInterfaces():目标对象(类)包含的所有接口信息;
参数3:代理对象关联的invoketionHander对象(实例)。
EG:
接口:Subject,相应实现类mySubject(目标对象实例);
InvoketionHander接口实现类myHander,实现相应invoke()。
综上参数:
Subject sb = Proxy.newProxyInstanse(myHander.getClass().getClassLoader(), mySubject.getClass().getInterfaces(), myHander);
sb.方法名();
在jvm运行时生成一个代理对象,通过执行和代理对象关键的invoketionhandler对象的invoke方法,去执行真实对象的目标方法。
代理机制关键的一个接口(invoketionhandler)和一个类(proxy)。
整体流程是通过Proxy.newProxyInstanse(参数1,参数2,参数3)生成目标对象:
参数1:invoketionHander接口实现类对象实例.getClass.getClassLoader():类加载器;
参数2:目标对象实例.getClass.getInterfaces():目标对象(类)包含的所有接口信息;
参数3:代理对象关联的invoketionHander对象(实例)。
EG:
接口:Subject,相应实现类mySubject(目标对象实例);
InvoketionHander接口实现类myHander,实现相应invoke()。
综上参数:
Subject sb = Proxy.newProxyInstanse(myHander.getClass().getClassLoader(), mySubject.getClass().getInterfaces(), myHander);
sb.方法名();
本文深入探讨了JDK动态代理的工作原理和技术细节。通过在JVM运行时生成代理对象并利用InvocationHandler接口来调用目标对象的方法,实现了灵活的代理机制。文中详细解释了Proxy.newProxyInstance方法的三个关键参数及其作用。
1557

被折叠的 条评论
为什么被折叠?



