【发布时间】:2011-04-07 13:38:22
【问题描述】:
可能重复:
What's the nearest substitute for a function pointer in Java?
我正在编写一个工厂类来创建一堆不同的小部件。为了论证起见,假设这个工厂可以创建 1000 个小部件。
myWidget createWidget (widgetId)
{
case 0: createwidget0 ();
.
.
case 1000: createwidget1000 ();
}
我不想写 1000 个案例陈述。我想把所有的创建例程 在一个数组中。使用 widgetId 作为索引直接执行创建例程,所以 它不必经过比较1000个条件。所以整个 createWidget 例程可以这样简化
myWidget createWidget (widgetId)
{
myAwsomeFuncArr createFunc;
myWidget widget = createFunc[widgetId] ();
}
在 Java 中可以做到这一点吗?
【问题讨论】:
-
你甚至不需要数组,试试 getClass().getMethod("createwidget"+widgetId).invoke();将替换您的案例/数组。
标签: java