news 2026/10/16 18:36:49

Java动态代理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java动态代理

Java动态代理

一、概述

二、具体实现

2,1创建被代理对象(同时里面包含了相关的方法)

packagecom.itheima.mydynamicproxy1.zj;publicclassBigStarimplementsStar{// 先是创建一个类privateStringname;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicBigStar(Stringname){this.name=name;}publicBigStar(){}// 然后是有唱歌和跳舞的方法@OverridepublicStringsing(Stringname){System.out.println(this.name+"正在唱"+name);return"谢谢";}@Overridepublicvoiddance(){System.out.println(this.name+"正在跳舞");}}

2.2创建接口(里面是用来定义要代理的方法)

packagecom.itheima.mydynamicproxy1.zj;publicinterfaceStar{publicabstractStringsing(Stringname);publicabstractvoiddance();}

2.2创建用于生成代理对象的类(重点)

packagecom.itheima.mydynamicproxy1.zj;importjava.lang.reflect.InvocationHandler;importjava.lang.reflect.Method;importjava.lang.reflect.Proxy;publicclassProxyUtill{// 下面静态方法的作用是给一个对象创建代理对象// 其中方法传递的形象就是需要代理的对象// 首先是创建静态方法publicstaticStarcreateProxy(BigStarbigStar){// 下面这是源码:// public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)// 其中第一个参数是类加载器,用于加载代理类// 第二个参数是用来指定代理类长成什么样,相当于是传递过来的属性// 第三个参数就是指定代理类干什么,也就是执行哪些方法// 那么下面就是逐一进行// 获取类加载器// 这句代码实际上做了两件事:1,.获取先找到是谁将当前类加载到内存。2.再次使用这个类加载器来加载我们的代理Starstar=(Star)Proxy.newProxyInstance(// 这就是上面的参数一ProxyUtill.class.getClassLoader(),// 类加载器干什么实际上是封装在接口当中的newClass[]{Star.class},newInvocationHandler(){@OverridepublicObjectinvoke(Objectproxy,Methodmethod,Object[]args)throwsThrowable{// 下面就是在判断这个类了if("sing".equals(method.getName())){// 下面就是代理做的一些准备工作System.out.println("准备话筒,收钱");}elseif("dance".equals(method.getName())){System.out.println("准备场地,收钱");}// 去找大明星唱歌或者跳舞// 指定是哪个明星,进行什么动作returnmethod.invoke(bigStar,args);}});//返回代理好的对象即可returnstar;}}

这里面其实分清楚层次再加上看看源码其实并不难理解,首先整体上是通过createProxy这个静态方法来生成代理对象,需要传递被代理对象作为形参,其底层又是运用Proxy的newProxyInstance方法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/17 10:58:56

基于深度学习YOLOv11的晶圆体缺陷检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

一、项目介绍 本文提出了一种基于深度学习目标检测模型YOLOv11的晶圆体缺陷检测系统&#xff0c;旨在实现高效、精准的晶圆制造缺陷分类与定位。该系统针对9类典型晶圆缺陷&#xff08;Center、Donut、Edge-Loc、Edge-Ring、Loc、Near-full、None、Random、Scratch&#xff09…

作者头像 李华
网站建设 2026/10/17 0:17:32

Java事务ACID解析:深入浅出搞定这4大特性!

文章目录Java事务ACID解析&#xff1a;深入浅出搞定这4大特性&#xff01;什么是事务&#xff1f;1. 原子性&#xff08;Atomicity&#xff09;&#xff1a;要么全部成功&#xff0c;要么全军覆没定义实际应用示例代码总结2. 一致性&#xff08;Consistency&#xff09;&#x…

作者头像 李华
网站建设 2026/10/11 13:53:51

我国缺口最大的4个专业,平均月薪过万,毕业生不愁就业

我国缺口最大的4个专业&#xff0c;平均月薪过万&#xff0c;毕业生不愁就业 最近几年&#xff0c;随着国家产业转型升级和科技创新驱动&#xff0c;人才市场上出现了明显的结构性矛盾。有些行业人满为患&#xff0c;毕业生求职难&#xff1b;而有些领域却是"僧多粥少&qu…

作者头像 李华
网站建设 2026/10/15 4:26:20

新手参加2026年CTF大赛——Web题目的基本解题流程

CTF&#xff08;Capture the Flag&#xff09;是网络安全比赛中的一种常见形式&#xff0c;参赛者需要通过破解题目、发现漏洞并获取flag&#xff08;标志&#xff09;来获得分数。 这些问题涉及多个领域&#xff0c;如逆向工程、Web安全、密码学、二进制漏洞、取证分析等。CTF…

作者头像 李华
网站建设 2026/10/15 14:15:55

AI写论文不再难!4款AI论文写作神器,搞定你的学术写作任务!

你是否还在为撰写期刊论文而感到烦恼&#xff1f;面对数不胜数的文献、繁琐的格式要求和反复的修改稿&#xff0c;无疑会让学术研究人员感到效率低下的压力。但是别担心&#xff0c;今天我将向你推荐四款经过实测的AI论文写作工具&#xff0c;这些工具可以从文献检索、论文大纲…

作者头像 李华