2013-10-23 27 views
-2

是否可以将void类型的方法存储在arrayList中,还是只能存储具有返回值的方法?我想打电话和高达15种任何一个方法,而不是写:如何存储void方法的数组列表

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

等等

通过您的try/catch和代码几行围绕的时间(即重复每一个人)这将是非常巧妙的,如果你可以这样做:

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

但是我的方法只是“做的东西”,而不是返回一个值,所以如果该方法本身不能存储在阵列中是有别的地方他们可以一起存储和提取一个for循环或只使用“var”整数?

+1

你问这个问题的语言是什么? –

+0

对不起Bob在谈论Java – user2913049

+0

是[this](http://stackoverflow.com/questions/1073358/function-pointers-in-java)你需要什么? – tommyo

回答

-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实例填充对象数组。

+0

这会非常感谢:) – user2913049

+1

当然,您可以通过获取Method对象引用来存储方法引用。更棘手的部分是通过反射获取所需的Method对象引用。当然,你的建议是另一种合理的建议,只是事实上是错误的。 –

+0

你每天都会学到一些东西! –

0

你所要求的是精确鉴于

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

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

相关问题