作者mgtsai ()
看板java
标题Re: [问题] 有没有可能做到类似函式指标的功能?
时间Fri Jan 8 17:07:46 2010
※ 引述《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)
1F:→ PsMonkey:==.=== 有没有高手可以解释一下这篇... 我不懂 Orz 01/08 17:17
2F:→ ken915007:我新手=.= 01/08 18:02