0 0

如何优雅地拦截这样的代码?5

有这样一些外部提供的类

class A {

}

class B {

}

class C {

}

....

这些类我不想改变他们, 或者我改不了。

问题: 我想在某个位置拦截他们。 通常这样做:

if (obj instanceof A) {

}
if (obj instanceof B) {

}

这种作法很丑陋, 如果A,B是可控的,我可以让他们继承一个接口, 但是如果不可控的时候,我有时需要拦截A,B,有时则需要拦截更多。。
if显然是丑陋的,在不改变原来类的基础上,有没有好的办法巧妙拦截呢?
OO 
2010年11月09日 17:06

2个答案 按时间排序 按投票排序

0 0

void f(A a){}
void f(B b){}
void f(C c){}

{
f(obj);
}

2010年11月09日 23:03
0 0

这个基本需要你自己去寻找这些类的规则了,如包、名字等等。

2010年11月09日 17:17

相关推荐

    小程序如何自主实现拦截器的示例代码

    在一些框架中发现会提供一个很实用的功能:拦截器(interceptor)。例如要实现这个需求:小程序每次获取到定位后都存到 globalData 里: ...优雅的拦截器 有了拦截器,可以更优雅的实现它: intercept('ge

    使用Struts2的拦截器实现权限控制

    1 实现权限控制拦截器 ...对于上面的需求,可以在每个Action的执行实际处理逻辑之前,先执行权限检查逻辑,但这种...因为大部分Action里的权限检查代码都大同小异,故将这些权限检查的逻辑放在拦截器中进行将会更加优雅。

    轻量级 Java 权限认证框架让鉴权变得简单优雅

    无需实现任何接口,无需创建任何配置文件,只需要这一句静态代码的调用,便可以完成会话登录认证。登录认证 —— 单端登录、多端登录、同端互斥登录、七天内免登录。权限认证 —— 权限认证、角色认证、会话二级认证...

    C# 优雅的 APIHOOK 支持X86+X64源码

    //拦截信息 Console.Title = caption; Console.WriteLine(text); //调用源函数 return Origin.Invoke(owner, text, caption, options); } } } [STAThread] static void Main(string[] args) { using (var...

    尚硅谷Java视频_Struts2视频教程

    每个技术点都配备案例和代码,对于拦截器、Struts2 运行流程分析、值栈等技术点的讲授更是深入解析源代码,授之以渔。  学习完本Java视频教程,你会真正理解 Struts2 的优雅和简洁,并使你具备开发 Struts2 企业...

    前后端通用,轻量却强大的 HTTP 客户端(同时支持 WebSocket 以及 Stomp 协议)

    同步拦截器、异步预处理器、回调执行器、全局监听、回调阻断 等等,让你扩展无限功能!文件上传下载(过程控制、进度监听),上传下载如此简单!单方法回调,充分利用 Lambda 表达式,让你代码超级简洁!超级轻量,...

    Spring、SpringMVC和Mybatis框架整合包

    手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis 博客地址:http://blog.csdn.net/qq598535550/article/details/51703190 我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能;而且在大...

    mybatis-page-plug:超级精简,超级简单,超级优雅实现mybatis分页功能

    超级精简,超级简单,超级优雅实现mybatis分页功能 本项目在以下代码托管网站 码云: GitHub: 简单使用 将 com.egzosn.mybatis.page.plug.PagingInterceptor 拦截器加入至spring 容器即可 本项目简单例子是spring ...

    通俗易懂的Struts2教程(含配套资料)

    每个技术点都配备案例和代码,对于拦截器、Struts2 运行流程分析、值栈等技术点的讲授更是深入解析源代码,授之以渔。 学习完本 Java视频教程,你会真正理解 Struts2 的优雅和简洁,并使你具备开发 Struts2 企业级...

    highslide-4.1.13 Dome

    使用视觉Highslide编辑器来设置Highslide安装,无需编写代码。 快速而优雅。 不需要像Flash或Java插件。 弹出拦截器没有问题。打开浏览器窗口内活跃的内容。 单击。打开后的图像或HTML弹出,用户可以进一步滚动或离开...

    lamp-cloud微服务脚手架

    10、优雅的Bean转换 采用Dozer组件来对 DTO、DO、PO等对象的优化转换 11、前后端统一表单验证 严谨的表单验证通常需要 前端+后端同时验证, 但传统的项目,均只能前后端各做一次检验, 后期规则变更,又得前后端同时...

    sqlingo::collision:轻量级的DSL&ORM,可帮助您在Go中编写SQL

    它从数据库生成代码,并允许您以优雅的方式编写SQL查询。 产品特点 从数据库自动生成DSL对象和模型结构,因此您无需手动保持同步 具有一些高级SQL查询语法SQL DML(SELECT / INSERT / UPDATE / DELETE) 在编译时...

    Umajs:Umajs,基于Typescript的易于使用的框架

    装饰器(Decorator),代码组织更优雅方便 自定义装饰器(createArgDecorator),可以快速的扩展参数装饰器,用于参数校正,参数转换,参数聚合等 面向切面(AOP),基于装饰器的Aspect可以很方便的对任意方法进行...

    Semian:用于Ruby的快速恢复工具

    Semian是一个在这些情况下快速失败的库,可让您优雅地处理错误。 Semian通过受和启发的启发式模式来拦截资源访问,从而实现了这一目标: 。 一种用于将请求数量限制为有问题的依赖项的模式。 。 控制对单个资源的...

    asp.net知识库

    HttpModule 实现 ASP.Net (*.aspx) 中文简繁体的自动转换,不用修改原有的任何代码,直接部署即可! 服务器自定义开发二之客户端脚本回发 Web开发: 使用URL重写WEB主题切换 如何在Asp.Net1.1中实现页面模板(所谓的...

    DoraemonKit研发助手-其他

    功能模块:一、平台工具1、【数据Mock】 App接口Mock解决方案,提供一套基于App网络拦截的接口Mock方案,无需修改代码即可完成对于接口数据的Mock。2、【健康体检】 一键式操作,整合DoKit多项工具,数据可视化,...

    lamp-cloud微服务脚手架-其他

    10、优雅的Bean转换 采用Dozer组件来对 DTO、DO、PO等对象的优化转换 11、前后端统一表单验证 严谨的表单验证通常需要 前端+后端同时验证, 但传统的项目,均只能前后端各做一次检验, 后期规则变更,又得前后端同时...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例238 优雅的JDBC代码 299 实例239 结果集与Bean列表 301 实例240 编写MD5查看器 302 实例241 基于Base64编码 304 实例242 基于Base64解码 305 实例243 发送简单的Email 306 实例244 发送带附件的Email 308 实例...

Global site tag (gtag.js) - Google Analytics