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

nwlls2ji  于 2023-01-01  发布在  Java
关注(0)|答案(2)|浏览(140)

我希望能够创建一个用我自己的方法填充的列表(集合,数组),并在迭代的每一步调用该方法。什么是最好的解决方案?
我想要这样的东西:

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

Object o = new Object();

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

uplii1fm1#

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

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

// Store the methods in the list
methodList.add(p -> method1(p));
methodList.add(p -> method2(p));
methodList.add(p -> method3(p));
methodList.forEach(f -> f.accept("Hello"));

可以使用Runnable的无参数函数:

List<Runnable> methods = new ArrayList<>();
methods.add(() -> method1());
methods.add(() -> method2());
methods.add(() -> method3());
methods.forEach(f -> f.run());
b1zrtrql

b1zrtrql2#

在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);
}

相关问题