按顺序调用方法

时间:2014-03-19 18:26:40

标签: java methods

我有5种不同的方法,比如

public void met1(){}
public void met2(){}
public void met3(){}
public void met4(){}
public void met5(){}

我想从1到5调用此方法是否有任何方便的方法来执行此操作。

我不想一个接一个地打电话,或者我不想把方法调用放在其他方法中。

我该怎么做?

4 个答案:

答案 0 :(得分:3)

我相信你可以用反射来做到这一点:

YourClass classInstance = new YourClass();

for (int i = 1; i < 6; i++) {
    Method yourMethod = YourClass.class.getMethod("met" + i);

    method.invoke(instance);
} 

没有测试过,所以没有保证。

答案 1 :(得分:2)

您是否研究过流畅的设计模式? http://www.javacodegeeks.com/2013/01/fluent-object-creation.html

示例可能是这样的:

myObject.met1().met2().met3().met4().met5().result();

答案 2 :(得分:1)

你可以用反射做到这一点,正如其他答案之前提到的那样。如果可能,通常会避免反思。

实际上,解决您关注的最常见的设计模式是责任链 http://en.wikipedia.org/wiki/Chain-of-responsibility_pattern

答案 3 :(得分:0)

通过名称调用方法的唯一方法是通过反射。有关如何执行此操作,请参阅此文章:

How do I invoke a Java method when given the method name as a string?

这样的事情应该有效:

 for (int i = 1; i < 6; i++){
      java.lang.reflect.Method method; 
      try {
           method = this.getClass().getMethod("met" + i);
           method.invoke(this);
      } catch (SecurityException e) {
           // ...
      } catch (NoSuchMethodException e) {
           // ...
      }
 }