来自Main的函数调用

时间:2012-08-01 23:23:06

标签: java function main

我有功能A,功能B和功能C

我试图从Main中随机调用其中一个函数(A或B或C)。

我该怎么做呢?

我可以将这些函数放在名为FunctionList

的arraylist中

然后执行以下操作?

int x = (int)(Math.random() * Functionlist.size());
FunctionCall = FunctionList.get(x) 

3 个答案:

答案 0 :(得分:2)

如果函数的数量很少,最简单的方法是switch

switch((int)(Math.random()*NUM_FUNCTIONS) {
    case 0:
        functionA();
        break;
    case 1:
        functionB();
        break;
  //  ...
}

答案 1 :(得分:0)

Java不支持函数指针。一种解决方法是有条理地命名你的函数,即f1,f2,f3等......然后根据该模式创建一个Method对象。例如,使用函数名称f1,f2,f3,您可以这样做:

java.lang.reflect.Method method;
try {
  methodName = "f" + String.valueOf((int) Math.random()*NUM_FUNCTIONS);
  method = obj.getClass().getMethod(methodName, param1.class, param2.class, ..); 
} catch (SecurityException e) {
  // ...
} catch (NoSuchMethodException e) {
  // ...
}

然后像这样调用函数:

try {
  method.invoke(obj, arg1, arg2,...);
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {

*这个答案大量借鉴here

答案 2 :(得分:0)

如果没有参数,我可以通过创建-maybe匿名类来实现某些接口Function<T>和方法call(T arg),甚至是Runnable,从而以标准方式模仿函数对象。这些实例可以放入集合