如何解决复杂条件下的程序流的控制问题?
生活随笔
收集整理的這篇文章主要介紹了
如何解决复杂条件下的程序流的控制问题?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
帖子 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)
方案的基本思路是利用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
總結
以上是生活随笔為你收集整理的如何解决复杂条件下的程序流的控制问题?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在河南呢
- 下一篇: Display Skin