【问题标题】:how can I store an arraylist of void methods如何存储 void 方法的数组列表
【发布时间】:2013-10-23 20:32:28
【问题描述】:

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

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

等等……

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

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

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

【问题讨论】:

  • 你问这个问题的语言是什么?
  • 抱歉 Bob 谈论 Java
  • 你需要this吗?

标签: java arrays arraylist void


【解决方案1】:

你所要求的正是由

给出的
java.util.ArrayList<java.lang.reflect.Method>

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您不能在 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 的实例填充对象数组。

      【讨论】:

      • 当然,您可以通过获取 Method 对象引用来存储方法引用。更棘手的部分是获取所需的 Method 对象引用,通常是通过反射。当然,您的建议在其他方面是合理的建议,实际上是错误的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      • 2021-01-28
      • 2015-04-28
      • 1970-01-01
      • 2017-01-28
      • 2011-01-23
      相关资源
      最近更新 更多