於是乎,在 Java 環境中透過 ArrayList 記錄此次工作依序將執行的任務,每次挑一個出來用,就達成任務了 :P
紀錄一下(此例各個函式在此例沒有傳遞參數):
class Job {
private String tag = "Job";
private List<String> mFunctionNameList = new ArrayList<String>();
void callFunctions() {
if (mFunctionNameList.size() > 0) {
String methodName = mFunctionNameList.get(0);
mFunctionNameList.remove(0);
try {
Job.this.getClass().getDeclaredMethod(methodName).invoke(this);
} catch (Exception e) {
}
}
}
// call A -> C -> D
void task1() {
mFunctionNameList.clear();
mFunctionNameList.add("A");
mFunctionNameList.add("C");
mFunctionNameList.add("D");
callFunctions();
}
// call B -> C -> A
void task2() {
mFunctionNameList.clear();
mFunctionNameList.add("B");
mFunctionNameList.add("C");
mFunctionNameList.add("A");
callFunctions();
}
void A() {
Log.d(tag, "call A");
}
void B() {
Log.d(tag, "call B");
}
void C() {
Log.d(tag, "call C");
}
void D() {
Log.d(tag, "call D");
}
}
沒有留言:
張貼留言