如何创建用Java填充方法的列表并迭代它(使用方法)

时间:2014-10-05 14:41:04

标签: java collections iterator

我希望能够创建填充了我自己的方法的列表(集合,数组),并在迭代的每个步骤中调用该方法。什么是最好的解决方案?

我想要这样的事情:

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

Object o = new Object();

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

2 个答案:

答案 0 :(得分:2)

在 Java 8 及更高版本中,您可以创建一个函数接口列表来存储方法,如下例所示:

// Create a list of Consumer
List<Consumer<String>> methodList= new ArrayList<>();

// Store the methods in the list
methodList.add(p -> myCustomMethod1(p));
methodList.add(p -> myCustomMethod2(p));
methodList.add(p -> myCustomMethod3(p));

// Iterate and call each method
String myParam = "test";
for(Consumer<String> method : consumers) {
     method.accept(myParam ); 
}

答案 1 :(得分: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);
}