502. Java 反射 - 编写 MessageInterceptor 类 文章目录502. Java 反射 - 编写 MessageInterceptor 类1. 设计思路2. MessageInterceptor 实现3. 示例讲解原始服务类测试调用输出结果4. 总结502. Java 反射 - 编写 MessageInterceptor 类1. 设计思路拦截器的目标是在调用目标方法前→ 校验或修改参数。调用目标方法→ 执行实际的业务逻辑。在调用目标方法后→ 处理返回值或执行额外逻辑。在这个例子中我们希望拦截SomeInterceptedService.message()方法并且检查参数是否合法非空、非空字符串。调用原始方法获取结果。在结果末尾加上 [was intercepted]来表明它被拦截过。2. MessageInterceptor 实现publicclassMessageInterceptorimplementsInterceptorSomeInterceptedService,String{OverridepublicStringintercept(SomeInterceptedServiceservice,MethodinterceptedMethod,Object...arguments){try{if(arguments.length1){// ✅ 1. 参数校验Stringinput(String)arguments[0];Objects.requireNonNull(input,Input is null);if(input.isEmpty()){thrownewIllegalArgumentException(Input is empty);}// ✅ 2. 调用目标方法Stringresult(String)interceptedMethod.invoke(service,arguments);// ✅ 3. 修改返回值returnresult [was intercepted];}}catch(IllegalAccessException|InvocationTargetExceptione){thrownewRuntimeException(Error invoking method reflectively,e);}thrownewIllegalArgumentException(Arguments should contain exactly one argument of type String);}}3. 示例讲解原始服务类publicclassSomeInterceptedService{Intercept(MessageInterceptor.class)publicStringmessage(Stringinput){returninput.toUpperCase();}}测试调用publicclassMain{publicstaticvoidmain(String[]args)throwsException{Stringoutput(String)ServiceFactory.invoke(SomeInterceptedService.class,message,hello);System.out.println(Final output output);}}输出结果FinaloutputHELLO[was intercepted]4. 总结参数校验如果传入null或空字符串会抛出异常阻止目标方法的执行。拦截逻辑我们在调用message()前后加入了额外逻辑参数校验 结果追加说明。反射调用通过interceptedMethod.invoke(service, arguments)来执行实际的业务方法。增强返回值返回值被拦截器修改增加了 [was intercepted]。

相关新闻

最新新闻

千牛订单处理系统:C++级指纹伪装深度,连系统调用层都查不出

千牛订单处理系统:C++级指纹伪装深度,连系统调用层都查不出

千牛订单处理系统:C级指纹伪装深度,连系统调用层都查不出 做电商这么多年,最大的感悟就是:千牛的订单批量处理,是店群运营中最耗人力也最容易出错的环节。 店群日均订单量大,打单发货是纯重复劳动。从读取…

2026/8/24 1:47:18
场景感知智能体技能检索:从语义匹配到上下文驱动的范式演进

场景感知智能体技能检索:从语义匹配到上下文驱动的范式演进

1. 从“技能匹配”到“场景感知”:智能体技能检索的范式演进在构建一个复杂的智能体系统时,我们常常会面临一个核心挑战:当用户提出一个复杂请求时,如何从成百上千个内置技能中,精准、高效地找到最合适的那一个或那一组…

2026/8/24 1:47:18
云优化新范式:从静态配置到波动性驱动的动态适应机制

云优化新范式:从静态配置到波动性驱动的动态适应机制

你有没有遇到过这种情况:一个云上应用,昨天还跑得好好的,今天突然就慢了,或者成本莫名其妙涨了一截。你打开监控面板,CPU、内存、网络流量似乎都“正常”,但业务就是不对劲。于是你开始调参:给这…

2026/8/24 1:47:18
鸿蒙应用开发面试核心要点与实战解析

鸿蒙应用开发面试核心要点与实战解析

1. 鸿蒙应用开发面试核心要点解析作为一名参与过多次鸿蒙技术面试的开发者,我深刻理解面试官考察的重点和候选人常犯的错误。鸿蒙生态的快速发展使得相关岗位需求激增,但很多应聘者往往陷入"死记硬背"的误区。本文将系统梳理真正有价值的面试准…

2026/8/24 1:47:18
高速连接器信号完整性仿真实战:从HFSS/CST建模到S参数与眼图分析

高速连接器信号完整性仿真实战:从HFSS/CST建模到S参数与眼图分析

1. 项目概述:从理论到实践的信号完整性仿真进阶上一期我们聊了连接器信号完整性仿真的基础概念和前期准备,算是把“地基”给打牢了。很多朋友反馈说,知道了为什么做,但具体“怎么做”还是有点懵,尤其是面对CST、HFSS这…

2026/8/24 1:47:18
AI大模型应用开发实战:从RAG、Agent到SpringAI的零基础就业指南

AI大模型应用开发实战:从RAG、Agent到SpringAI的零基础就业指南

这次我们来看一套面向2026年的《AI大模型应用开发》实战教程。这套教程的核心目标非常直接:帮助零基础开发者,通过一套系统化的实战路径,掌握当前企业招聘中最热门的AI应用开发技能,并达到能够胜任相关岗位的水平。它不空谈概念&a…

2026/8/24 1:42:18