看板 java 關於我們 聯絡資訊
※ 引述《mgtsai ()》之銘言: : Class Main : { : public static void main(int argc, String[] argv) { : PrintMethod fp; // 類似宣告 void (*fp)(void); : : if (argv[0].equals("printA")) : fp = ABC.printA; // 類似 fp = ABC::printA; : else if (argv[0].equals("printB")) : fp = ABC.printB; // 類似 fp = ABC::printB; : else if (argv[0].equals("printC")) : fp = ABC.printC; // 類似 fp = ABC::printC; : : fp.invoke(); // 類似呼叫 (*fp)(); : } : } : : -- : 推 petertc:這有解決原po的問題嗎?i.e., 不動到dispatcher新增功能 01/08 16:54 ^^^^^^^^^^^^^^^^^^^^^^^^ 重點就在於 PrintMethod fp; 若要用 dispatcher 上,那就把 fp 變數帶著跑就好 因為原 po 的 main() 中,參數輸入是 "字串" 所以無論如何,都會有 字串 -> 指標 的查詢程式碼 (對照使用 C 或 C++,即使支援 function pointer,但也免不了有這一段程式碼 而且 C 或 C++ 更不方便的地方在於, 並沒有如 Java 有 reflection 可以自動做到 字串 -> 指標 的查詢) 但如果不限制輸入參數是字串的話,那麼: class Dispatcher { public void dispatch(PrintMethod fp, [some other arguments]) { .... // do something fp.invoke(); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.250.129.52 ※ 編輯: mgtsai 來自: 60.250.129.52 (01/08 17:08)
PsMonkey:==.=== 有沒有高手可以解釋一下這篇... 我不懂 Orz 01/08 17:17
ken915007:我新手=.= 01/08 18:02