已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java动态代理一动态类Proxy的使用1.什么是动态代理?答:动态代理可以提供对另一个对象的访问,同时隐藏实际对象的具体事实。代理一般会实现它所表示的实际对象的接口。代理可以访问实际对象,但是延迟实现实际对象的部分功能,实际对象实现系统的实际功能,代理对象对客户隐藏了实际对象。客户不知道它是与代理打交道还是与实际对象打交道。2.为什么使用动态代理?答:因为动态代理可以对请求进行任何处理3.使用它有哪些好处?答:因为动态代理可以对请求进行任何处理4.哪些地方需要动态代理?答:不允许直接访问某些类;对访问要做特殊处理等目前Java开发包中包含了对动态代理的支持,但是其实现只支持对接口的的实现。 其实现主要通过java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口。Proxy类主要用来获取动态代理对象,InvocationHandler接口用来约束调用者实现以下为模拟案例,通过动态代理实现在方法调用前后向控制台输出两句字符串目录结构定义一个HelloWorld接口 1 package com.ljq.test; 2 3 /* 4 * 定义一个HelloWorld接口 5 * 6 * author jiqinlin 7 * 8 */ 9 public interface HelloWorld 10 public void sayHelloWorld();11 类HelloWorldImpl是HelloWorld接口的实现 1 package com.ljq.test; 2 3 /* 4 * 类HelloWorldImpl是HelloWorld接口的实现 5 * 6 * author jiqinlin 7 * 8 */ 9 public class HelloWorldImpl implements HelloWorld10 11 public void sayHelloWorld() 12 System.out.println(HelloWorld!);13 14 15 HelloWorldHandler是 InvocationHandler接口实现 1 package com.ljq.test; 2 3 import java.lang.reflect.InvocationHandler; 4 import java.lang.reflect.Method; 5 6 /* 7 * 实现在方法调用前后向控制台输出两句字符串 8 * 9 * author jiqinlin10 *11 */12 public class HelloWorldHandler implements InvocationHandler13 /要代理的原始对象14 private Object obj;15 16 public HelloWorldHandler(Object obj) 17 super();18 this.obj = obj;19 20 21 /*22 * 在代理实例上处理方法调用并返回结果23 * 24 * param proxy 代理类25 * param method 被代理的方法26 * param args 该方法的参数数组27 */28 public Object invoke(Object proxy, Method method, Object args) throws Throwable 29 Object result = null;30 /调用之前31 doBefore();32 /调用原始对象的方法33 result=method.invoke(obj, args);34 /调用之后35 doAfter();36 return result;37 38 39 private void doBefore()40 System.out.println(before method invoke);41 42 43 private void doAfter()44 System.out.println(after method invoke);45 46 47 测试类package com.ljq.test;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Proxy;public class HelloWorldTest public static void main(String args) HelloWorld helloWorld=new HelloWorldImpl(); InvocationHandler handler=new HelloWorldHandler(helloWorld); /创建动态代理对象 HelloWorld proxy=(HelloWorld)Proxy.newProxyInstance( helloWorl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- NOIP 考试常见试题及准确答案梳理
- 血流变试题及精准答案呈现
- 常用消毒剂选择与配制课件
- 碧云寺详细讲解
- 《临床输血技术规范》解读
- 2025年全国统考数学三历年真题(重难点专项突破)
- 2024数学三期末试卷(详细解析)
- 考研数学二历年真题全套-2024(名师编写)
- 急性鼻炎诊断与治疗专家共识
- 成人基础生命支持流程课件
- (2026年秋)外研版七年级英语上册教学计划
- 中国检验医学危急值报告指南(2024年版)
- 高速公路养护施工组织技术方案
- 2026-2030中国液体硅酸钠市场销量预测及未来发展策略分析研究报告
- 产业基金投后管理专项招聘笔试参考题库 含答案
- (2025版)《中华人民共和国矿产资源法》
- 四级养老护理员测试试题库及答案
- 高考考前必背核心要点(核心知识)-2026年高考生物二轮复习
- 2026年学生素质教育测试题及答案
- 2026年文物安全巡查知识竞赛题库
- 加气站防雷安全工作制度
评论
0/150
提交评论