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

网站备案icp备案wordpress全站伪静态

网站备案icp备案,wordpress全站伪静态,做互联网推广的公司,网站成功案例怎么做Java实现动态代理 Java中的动态代理是一种在运行时动态创建代理类和对象的机制,允许开发者在不修改原类代码的情况下,增加额外的功能。主要通过java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口来实现。 准备要求: 1.接…

Java实现动态代理

        Java中的动态代理是一种在运行时动态创建代理类和对象的机制,允许开发者在不修改原类代码的情况下,增加额外的功能。主要通过java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口来实现。

准备要求:

1.接口:动态代理要求目标对象必须实现一个或多个接口

2.实现InvocationHandler:这是一个接口,你需要在代理类中实现它,用来定义代理对象在处理方法调用时的行为。

3.Proxy类:这是提供新代理实例的类。它包含静态方法newProxyInstance,用于在运行时创建代理对象。

实现流程:

1. 定义接口:定义一个或多个接口,这些接口将被代理类实现。

2. 实现InvocationHandler:创建一个类实现InvocationHandler接口,并在invoke方法中定义代理逻辑。

3. 创建代理对象:使用Proxy.newProxyInstance方法创建代理对象。

关系示意图:

示例:

1.首先创建被代理对象的接口:

public interface IService {public void sayHello();public void sayGoodbye();
}

2.创建该接口的实现类:

public class ServiceImpl implements IService{@Overridepublic void sayHello() {System.out.println("hello world");}@Overridepublic void sayGoodbye() {System.out.println("goodbye world");}
}

3.编写增强类(实现InvocationHandler接口的类)增强我们的接口实现类:

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;//增强类
public class ServiceHandler implements InvocationHandler {//引入需要被增强类的实例对象private Object target;public ServiceHandler(Object target) {this.target = target;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("Before method: " + method.getName());//通过反射机制来执行原始方法Object result = method.invoke(target, args);System.out.println("After method: " + method.getName());return result;}
}

4.客户端代码:

import java.lang.reflect.Proxy;public class Main {public static void main(String[] args) {//创建被增强类(我的接口的实现类)对象ServiceImpl service = new ServiceImpl();//创建增强类(InvocationHandler接口的实现类)对象ServiceHandler handler = new ServiceHandler(service);//生成代理对象(被增强过的IService实例对象)IService proxy = (IService) Proxy.newProxyInstance(IService.class.getClassLoader(),new Class[]{IService.class},handler);proxy.sayHello();proxy.sayGoodbye();}
}

运行结果:

        可以看到,我们成功地通过动态代理的方式对Service实现了增强。原本只会打印一句"Hello world",现在调用sayHello方法时,还会额外进行两句话地打印。在实际开发中,不一定就只是打印两句话,还可以干更多的事情。 

http://www.dtcms.com/a/412209.html

相关文章:

  • 学术论文 Word 样式规范
  • 力扣每日一题 611. 有效三角形的个数
  • 枣庄网站开发招聘中山发布微信公众号
  • 电子商务系统网站设计p2p网站制作流程
  • wordpress 手机 app台州百度搜索优化
  • 【读书笔记】深入理解JVM C6-9 虚拟机执行子系统
  • 化妆品行业的网站开发网站建设实训报告模版
  • 赤峰网站建设做新媒体广告的网站
  • 网站开发的毕业周记扬州城乡建设局网站
  • PS中的{#,N#}
  • 深度学习o
  • 咸阳网站建设公司电话wordpress读取数据库
  • 图书翻页的动画 做网站启动用dw网页设计心得体会
  • 拆解爆款内容的三维切片:从0到1直接套用
  • OpenAI 实现额外传参
  • 概念详解:单分支开发VS多分支开发
  • 先做网站后备案吗建设网站哪家便宜
  • 男女性做那个视频网站微信小程序广告投放价格表
  • 重庆网站建设公司哪个最好城乡住房规划建设局网站
  • 【android bluetooth 协议分析 18】【PBAP详解 1】【为何我们的通话记录中会出现1-521-8xx-1x9x】
  • linux平台下nginx的新手教程
  • 电商设计的工作内容大连自动seo
  • 什么是MCP协议,其在AI大模型系统中的作用是什么?
  • 铜陵app网站做营销招聘信息wordpress里的发消息给我
  • 制作一个买股票的网站怎么做国家备案网查询
  • 郑州网站建设工作网站开发成本都有哪几项
  • 北京大学php培训网站源码(dedewordpress投稿功能
  • 小型公司建网站烟台网站建设力荐企汇互联见效付款
  • 平台中如何一键安装、更新EDA工具
  • 百度网站 v怎么怎做福州app制作公司