2012-09-24 45 views
1

假設我有一些方法是這樣的:如何在Java中使用循環調用多個方法?

method1() 
method2() 
method3() 
method4() 
method5() 

但我不想調用序列方法:

obj.method1() 
obj.method2() 
obj.method3() 
obj.method4() 
obj.method5() 

這是無聊。如果我添加一個新方法:method6(),我需要添加手冊:obj.method6()

如果我可以使用Java中的循環調用它們會更好。任何人都可以給我一些建議?

謝謝!

+4

使用反射。 – Delta

+2

在你做這件事之前,先考慮一下這些方法是否可以更好地命名,以及只寫一種全稱的方法是否是最簡單的。 –

+0

將方法添加到您的'obj'來調用方法序列會不會更好? (我認爲那些是真正的方法名稱。) –

回答

3

試着這麼做:

for (int i=0;i<N;i++) { 
     try { 
     obj.getClass().getMethod("method"+i).invoke(obj); 
     } catch (Exception e) { 
     // give up 
     break; 
     } 
    } 
+2

啊......太晚了;-) – gnomie

2
public static void callABunchOfMethods(Object obj, int count) throws Exception { 
    for (int i = 1; i <= count; i++) 
    obj.getClass().getMethod("method"+i).invoke(obj); 
} 
1

我不知道爲什麼你已經使用這樣的命名convetion您的方法。如果不僅僅是這樣,你應該考慮爲他們找到更好的解決方案。今天它對你來說可能是顯而易見的,但對於你的代碼的追隨者並不是真的。

關於手動添加假設method6。我認爲添加一行代碼不僅僅是減少代碼的清晰度。

我的建議是,你應該使用Facade pattern

相關問題