Re: [問題] 有沒有可能做到類似函式指標的功能?
※ 引述《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)
→
01/08 17:17, , 1F
01/08 17:17, 1F
→
01/08 18:02, , 2F
01/08 18:02, 2F
討論串 (同標題文章)