2013-01-24 27 views
2

可能重复:
How do I invoke a Java method when given the method name as a string?它的名字调用一个方法

我有10种方法命名为:m1m2m3,...

这样的:

public void m1(){ 
.. 
} 

如何在'for'循环中用字符串调用它们?

我想这样做:在this对象

for (int i=1;i<11;i++){ 
    invoke('m'+i); 
} 
+1

您需要使用一个名为“反射”的功能 –

+0

这不是真的重复。简单的答案是使用反射,但是像这样的设计是错误的。您应该,直到Java以闭包形式使用接口定义方法签名并遍历实现该接口的对象并调用其定义的方法时,才能获得一流的方法。 –

回答

4

您需要使用reflection才能达到此目的。

Method method = getClass().getMethod(methodName); 
    method.invoke(this); 

因此,您需要将您的方法名称存储在一个数组中,并使用此代码片断逐个调用这些方法。

+0

虐待只是添加,并说如果你想添加一个参数,添加他的类在getmethod()作为第二个参数,并添加参数在调用()作为第二个参数。 – Wops

-1

使用Java反射。

+0

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 –

+0

提供一些指导方针,提示和不具体答案的目的不是吗?我的意思是,教一个人如何钓鱼,但不给他已经被捕的鱼... – GeorgeVremescu

+0

你的答案似乎是评论,而不是一个真正的答案。如果你想给出良好的答案,写好描述和适当的格式答案.. –

0

你可以用reflection来做到这一点。

但是,我会对你的用例感兴趣。通常可以重构应用程序,以便反射的使用是多余的。

相关问题