我希望能够创建填充了我自己的方法的列表(集合,数组),并在迭代的每个步骤中调用该方法。什么是最好的解决方案?
我想要这样的事情:
List a = new List();
a.add(myCustomMethod1());
a.add(myCustomMethod2());
Object o = new Object();
for (Method m : a){
m(o);
}
答案 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);
}