簡體   English   中英

順序調用方法

[英]Call Methods in Sequence

我有5種不同的方法

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

我想從1到5調用此方法,有什么方便的方法可以做到這一點。

我不想一個一個地調用,也不想將方法調用放在另一個方法中。

我怎樣才能做到這一點??

我相信您可以通過以下方式進行反射:

YourClass classInstance = new YourClass();

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

    method.invoke(instance);
} 

還沒有測試過,所以不能保證。

您是否研究過流利的設計模式? http://www.javacodegeeks.com/2013/01/fluent-object-creation.html

示例將是這樣的:

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

您可以通過反射來完成此操作,如前面提到的其他答案。 如果可能,通常避免反射。

實際上,最常見的設計模式就是責任鏈。
http://en.wikipedia.org/wiki/Chain-of-responsibility_pattern

按名稱調用方法的唯一方法是通過反射。 請參閱本文以了解如何執行此操作:

當給定方法名稱為字符串時,如何調用Java方法?

這樣的事情應該起作用:

 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) {
           // ...
      }
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM