2013-10-23 29 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語句。

相關問題