2012-09-24 47 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

相关问题