Java 按顺序调用方法

Java 按顺序调用方法,java,methods,Java,Methods,我有5种不同的方法 public void met1(){} public void met2(){} public void met3(){} public void met4(){} public void met5(){} 我想在1到5之间调用这个方法,有没有方便的方法呢 我不想一个接一个地调用,或者我不想把方法调用放在其他方法中 如何做到这一点???按名称调用方法的唯一方法是通过反射。有关如何做到这一点,请参阅本文: 像这样的方法应该会奏效: for (int i = 1; i &

我有5种不同的方法

public void met1(){}
public void met2(){}
public void met3(){}
public void met4(){}
public void met5(){}
我想在1到5之间调用这个方法,有没有方便的方法呢

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


如何做到这一点???

按名称调用方法的唯一方法是通过反射。有关如何做到这一点,请参阅本文:

像这样的方法应该会奏效:

 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) {
           // ...
      }
 }
for(int i=1;i<6;i++){
java.lang.reflect.Method;
试一试{
方法=this.getClass().getMethod(“met”+i);
方法调用(this);
}捕获(安全异常e){
// ...
}捕获(无此方法例外){
// ...
}
}

按名称调用方法的唯一方法是通过反射。有关如何做到这一点,请参阅本文:

像这样的方法应该会奏效:

 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) {
           // ...
      }
 }
for(int i=1;i<6;i++){
java.lang.reflect.Method;
试一试{
方法=this.getClass().getMethod(“met”+i);
方法调用(this);
}捕获(安全异常e){
// ...
}捕获(无此方法例外){
// ...
}
}

我相信你可以通过反射来实现,比如:

YourClass classInstance = new YourClass();

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

    method.invoke(instance);
} 
YourClass classInstance=新建YourClass();
对于(int i=1;i<6;i++){
方法yourMethod=YourClass.class.getMethod(“met”+i);
方法调用(实例);
} 

还没有测试过,所以不能保证

我相信你可以通过以下方式进行反思:

YourClass classInstance = new YourClass();

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

    method.invoke(instance);
} 
YourClass classInstance=新建YourClass();
对于(int i=1;i<6;i++){
方法yourMethod=YourClass.class.getMethod(“met”+i);
方法调用(实例);
} 

还没有测试过,所以不能保证

您研究过流畅的设计模式吗

示例如下:

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

你研究过流畅的设计模式吗

示例如下:

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

正如前面提到的其他答案一样,您可以通过反射来实现这一点。如果可能,通常避免反射

实际上,解决您的问题最常见的设计模式是责任链。

正如前面提到的其他答案一样,您可以通过反射来实现这一点。如果可能,通常避免反射

实际上,解决您的问题最常见的设计模式是责任链。

这可以通过反射实现,而不是直接实现。但你为什么要这么做呢?你想这么做的事实强烈表明你的设计有缺陷。为什么要用顺序编号的名称调用5个方法?也许我们可以帮助你找到一个更好的解决问题的方法。反思或者按顺序写是你的选择。为什么您觉得需要以这种方式调用这些方法?你的意思是什么?序列中的每个方法都会检查值,并根据它在对象上形成动作。@任务那么序列中的下一个方法是否应该在前一个方法的修改对象上工作?这可能是反射,而不是直接。但你为什么要这么做呢?你想这么做的事实强烈表明你的设计有缺陷。为什么要用顺序编号的名称调用5个方法?也许我们可以帮助你找到一个更好的解决问题的方法。反思或者按顺序写是你的选择。为什么您觉得需要以这种方式调用这些方法?你的意思是什么?序列中的每个方法都会检查值,并根据它在对象上形成动作。@任务那么序列中的下一个方法是否应该在上一个方法的修改对象上工作?