当前位置: 首页 > news >正文

Java.动态代理

1.创建一个接口

package Mydynamicproxy1;public interface Star {public abstract String sing(String str);public abstract void dance(String str);
}

2.创建一个BigStar类,要实现Star这个接口

package Mydynamicproxy1;public class BigStar implements Star{private String num;@Overridepublic String sing(String song){System.out.println("正在唱歌"+song);return "唱完了谢谢";}@Overridepublic void dance(String dan){System.out.println("正在跳舞"+dan);}public BigStar() {}public BigStar(String num) {this.num = num;}/*** 获取* @return num*/public String getNum() {return num;}/*** 设置* @param num*/public void setNum(String num) {this.num = num;}public String toString() {return "BigStar{num = " + num + "}";}
}

 3.代理的类

package Mydynamicproxy1;import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;public class ProxyUtil {public static Star createStar(BigStar bigstar) {Star star = (Star)Proxy.newProxyInstance(ProxyUtil.class.getClassLoader(),new Class[]{Star.class},new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {if("sing".equals(method.getName())){System.out.println("准备话筒,收钱");}else{System.out.println("准备场地,收钱");}return method.invoke(bigstar, args);}});return star;}}

4.Test类

package Mydynamicproxy1;public class Test {public static void main(String[] args) {BigStar bigStar=new BigStar("cxk");Star proxy=ProxyUtil.createStar(bigStar);System.out.println(proxy.sing("aaa"));}
}

http://www.lryc.cn/news/447089.html

相关文章:

  • SpringBoot自定义异常
  • 华为源NAT技术与目的NAT技术
  • 人工智能与机器学习原理精解【25】
  • 一篇文章讲清楚synchronized关键字的作用及原理
  • 深度学习模型之BERT的24个小模型源码与预训练紧凑模型的重要性
  • 【HarmonyOS】深入理解@Observed装饰器和@ObjectLink装饰器:嵌套类对象属性变化
  • Java笔试面试题AI答之设计模式(1)
  • java调用opencv部署到centos7
  • 【python qdrant 向量数据库 完整示例代码】
  • 初识C语言(三)
  • 用通义灵码如何快速合理解决遗留代码问题?
  • 新书推荐——《Python贝叶斯深度学习》
  • 数据结构-3.1.栈的基本概念
  • 关于 NLP 应用方向与深度训练的核心流程
  • linux如何启用ipv6随机地址
  • 探索 Android DataBinding:实现数据与视图的完美融合
  • Java 编码系列:线程基础与最佳实践
  • 《深度学习》—— ResNet 残差神经网络
  • 针对考研的C语言学习(定制化快速掌握重点3)
  • pikachu XXE(XML外部实体注入)通关
  • shell脚本定时任务通知到钉钉
  • 2.4K star的GOT-OCR2.0:端到端OCR 模型
  • 【JavaEE】——线程的安全问题和解决方式
  • 初步认识了解分布式系统
  • react 为什么不能学习 vue3 进行静态节点标记优化性能?
  • Elasticsearch黑窗口启动乱码问题解决方案
  • Logtus IT员工参加国际技术大会
  • ant design vue组件中table组件设置分组头部和固定总结栏
  • 2024年信息安全企业CRM选型与应用研究报告
  • 【后端开发】JavaEE初阶——计算机是如何工作的???