2014-10-05 43 views
0

我希望能夠創建填充了我自己的方法的列表(集合,數組),並在迭代的每個步驟中調用該方法。什麼是最好的解決方案?如何在Java中創建用方法填充的列表並使用方法迭代

我想是這樣的:

List a = new List(); 
a.add(myCustomMethod1()); 
a.add(myCustomMethod2()); 

Object o = new Object(); 

for (Method m : a){ 
    m(o); 
} 

回答

1

在Java中,你可以用反射通過使Method對象的列表做到這一點。然而,一個更簡單的方法是定義爲有需要的Object參數的方法的對象接口:

public interface MethodRunner { 
    public void run(Object arg); 
} 

List<MethodRunner> a = new ArrayList<>(); 
a.add(new MethodRunner() { 
    @Override 
    public void run(Object arg) { 
     myCustomMethod1(arg); 
    } 
}); 
a.add(new MethodRunner() { 
    @Override 
    public void run(Object arg) { 
     myCustomMethod2(arg); 
    } 
}); 

Object o = new Object(); 

for (MethodRunner mr : a) { 
    mr.run(o); 
} 
+0

對於什麼是可以用嗎? – 2014-10-05 14:47:49

+0

@АлександрГончаренко - 這種東西通常用於實現監聽器或觀察者模式。它也可以用來實現一個調度表(儘管你可能不會遍歷列表,而是通過索引檢索元素)。也可能有其他用途;這只是我的頭頂。 – 2014-10-05 14:50:00

+0

感謝您的回覆) – 2014-10-05 14:53:32