-2

是否可以将 void 类型的方法存储在 arrayList 中,还是只能存储具有返回值的方法?我想调用多达 15 种方法中的任何一种,而不是编写:

if(var == 1){
    method1()
}else if(var ==2){
    method2();
}

ETC...

当你用 try/catch 和几行代码(每行都重复)时,如果你能这样做会更整洁:

arrayList.get(var); //or something similar

然而,我的方法只是“做事”而不是返回一个值,所以如果方法本身不能存储在数组中,是否可以将它们存储在一起并使用 for 循环或仅使用“var”整数提取?

4

3 回答 3

0

你所要求的正是由

java.util.ArrayList<java.lang.reflect.Method>

但在我看来,您应该使用 switch 语句。

于 2013-10-23T21:46:29.833 回答
0

对于 6 年后像我一样来看这篇文章的任何人,我建议你ArrayList返回一个"". 如果不使用该值,它是否存在并不重要,但您需要它来使编译器满意。

于 2020-02-12T14:49:44.130 回答
-1

您不能在 Java 中存储方法引用。

但是,您可以创建一个具有已定义接口的类的对象,该接口允许您轻松调用该方法。

public interface VoidMethod {
  public void callMethod();
}

// ...

public class Method1 implements VoidMethod {
  public void callMethod() {
    // your stuff here
  }
}

// ...

public class MethodN implements VoidMethod {
  public void callMethod() {
    // your stuff here
  }
}

然后,您可以使用 VoidMethod 的实例填充对象数组。

于 2013-10-23T20:41:18.840 回答