帖子 http://www.cjsdn.com/post/view?bid=1&id=39182&sty=1&tpg=1&age=0 提出了一个程序设计中常常遇到的问题,即如何解决复杂条件下的程序流的控制问题。在此,我利用Reflection提供一种解决方案,给定一个key,调用给定key对应的函数。这样原问题实际上转换为利用条件生成合适的key的问题。生成key的一种可行的方案是将这些条件转换为对应的字符串,再将字符串连接起来。

方案的基本思路是利用HashMap形成一个函数的哈西表,主要是使用下面代码重的类:

import java.util.HashMap;import java.lang.reflect.*;

public class MethodMap {    private HashMap map;

    MethodMap() {        map = new HashMap();    }    public void addJumpPoint(String key, Method jumpPoint){        map.put(key, jumpPoint);    }

    public void removeJumpPoint(String key){        map.remove(key);    }

    public void jumpTo(String key, Object obj, Object[] args){        try {            Method m = (Method)map.get(key);            m.invoke(obj, args);        } catch (java.lang.IllegalAccessException e){            e.printStackTrace();        } catch (java.lang.reflect.InvocationTargetException e){            e.printStackTrace();        }    }

}

源代码见附件:

MethodMap.rar (1.55k)

转载于:https://www.cnblogs.com/sunsonbaby/archive/2004/09/19/44641.html

如何解决复杂条件下的程序流的控制问题?相关推荐

  1. 人脸识别最低像素_一种低分辨率条件下的人脸识别方法与流程

    本发明涉及生物识别技术领域,具体涉及一种低分辨率条件下的人脸识别方法. 背景技术: 从上个世纪六十年代以来,人脸识别算法获得了长期的发展,从对单一背景的针对性研究到现在对各种复杂条件的适应,如表情.姿 ...

  2. OpenYurt 联手 eKuiper,解决 IoT 场景下边缘流数据处理难题

    简介:云计算的出现促使物联网实现爆炸式增长.在设备规模和业务复杂度不断攀升的趋势之下,边缘计算因其能够将计算能力更靠近网络边缘和设备,从而带来云性能成本的降低,也在这波浪潮之下得到快速发展. 作者 | ...

  3. 集群空间服务器接收不到消息,解决Redis集群条件下键空间通知服务器接收不到消息的问题...

    解决Redis集群条件下键空间通知服务器接收不到消息的问题 键空间通知介绍 键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件. 可以通过对redis的 ...

  4. 解决Win7系统下以管理员身份运行的程序接收不到拖放文件消息[WM_DROPFILES]问题的方法

    大多数程序都有接收拖放文件的功能,即是用鼠标把文件拖放到程序窗口上方,符合格式的文件就会自动被程序打开.最近自己对编写的程序增加了一个拖放文件的功能,在 Windows XP.Windows Serv ...

  5. 通过修改程序解决Vista/Win7/Win8下应用程序兼容性问题

    在Vista/Win7/Win8下,有一个系统兼容性助手功能,使得程序在安装完成后或运行时,总是弹出应用程序兼容性助手相关的提示,很是烦人,事实上我们的程序兼容性是没有问题的,只不过是在程序中没有指定 ...

  6. qt程序在Linux下字体乱了,解决linux/Ubuntu下Qt creater 界面程序在编译运行后无法显示中文或中文乱码问题!...

    本文解决的主要是界面程序编译运行后无法显示中文的问题,如果在creater 中无法输入中文,下载个IBus或者搜狗之类的中文输入法即可解决! 首先说乱码问题,这个很好解决: 如果是在linux下打开W ...

  7. 解决Windows下Arm下Linux下Qt4程序的中文乱码问题

    解决Windows下Arm下Linux下Qt4程序的中文乱码问题 ################################################################### ...

  8. List集合多线程并发条件下不安全,如何解决?

    List集合多线程并发 前言 一.List集合使用模拟并发测试 1.1 单线程环境下 1.2 多线程环境下 二.解决方案 2.1 使用Vector类 2.1 使用Collections.synchro ...

  9. Linux错误27,解决在linux下编译32程序出现“/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录问题”...

    centos64位编译32位代码,出现/usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录,需要安装32位的glibc库文件. 安装 ...

最新文章

  1. 浅显易懂 Makefile 入门 (02)— 普通变量和自动变量定义、使用($@、$^、$< 作用)、变量覆盖 override、变量的来源 origin
  2. 5个无聊Python程序,用Python整蛊你的朋友们吧
  3. 优雅地断开TCP连接
  4. Oracle存在修改,不存在插入记录 SQL
  5. The General Framework Of Signal ProcessingOTFS Modulation Scheme(信号处理的一般框架OTFS调制)(4)
  6. 2021-CVPR-Inpainting论文导读
  7. OpenFeign实现微服务间的文件下载
  8. 第八次作业-项目进度计划
  9. JVM-GC日志分析
  10. 《期权、期货及其他衍生产品》读书笔记(第四章:利率)
  11. 四川计算机职称考试报名时间2015年,2015年四川省计算机职称考试各城市报名时间...
  12. ptp输出内容包含什么_PTP技术及其应用分析
  13. 【spring】spring 的事务(transaction) 四 嵌套事务PROPAGATION_NESTED
  14. 实话谈扶贫第一篇——教育扶贫
  15. Android 开发基于 Jenkins 实现持续集成
  16. 应用程序迁移_加速绿色IT-关于应用程序迁移和重新托管的实用指南
  17. python爬虫40个项目_python三个爬虫项目代码实例
  18. C语言读取BMP文件
  19. python用PIL给图片反转颜色
  20. Ubuntu14下制作绿色版MariaDB_20160601_七侠镇莫尛貝

热门文章

  1. Oracle的闪回特性之恢复truncate删除表的数据
  2. 程序员必备:提升开发效率神器,强烈推荐 !!!
  3. git clone 仓库的部分代码
  4. python 的类装饰器
  5. WebService(JAX-WS、XFire、Axis三种)获取客户端ip
  6. jQuery EasyUI dialog 居中最简单的办法
  7. HTML5自定义播放器(简式)
  8. 怎么拦截触摸事件IOS
  9. vscode更改插件路径_vscode插件分享
  10. 哈佛大学计算机与科学,Harvard的CS「哈佛大学计算机科学专业」