有没有办法将可执行 block 作为参数传递给静态方法?有可能吗?比如我有这个方法
public static void someMethod(boolean flag, Block block1, BLock block2) {
//some other code
if(flag)
block1.execute();
else block2.execute();
//some other code
}
或类似的东西。它实际上比这更复杂,我只是简化了这个问题。我正在尝试重构我的项目,并创建了一个通用实用程序类,其中包含我的类使用的静态方法。
最佳答案
你可以使用 Runnable
对象:
public static void someMethod(boolean flag, Runnable block1, Runnable block2) {
//some other code
if(flag)
block1.run();
else block2.run();
//some other code
}
然后你可以调用它:
Runnable r1 = new Runnable() {
@Override
public void run() {
. . .
}
};
Runnable r2 = . . .
someMethod(flag, r1, r2);
编辑(抱歉,@Bohemian):在 Java 8 中,调用代码可以使用 lambdas 进行简化:
someMethod(flag, () -> { /* block 1 */ }, () -> { /* block 2 */ });
您仍然会以相同的方式声明 someMethod
。 lambda 语法只是简化了如何创建和传递 Runnable
s。
关于java - 如何在 Java 中将可执行 block 作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18582807/