Raf*_*ski 4 java lambda java-8
我想将一个函数作为参数传递给另一个函数。例如:
void myFunction(boolean coondition, void function())
{
if(condition) {
function();
}
}
Run Code Online (Sandbox Code Playgroud)
在 Java 8 中这可能吗?
不,你不能传递方法。
但有一个简单的解决方法:传递一个 Runnable。
void myFunction(boolean coondition, Runnable function)
{
if(condition) {
function.run();
}
}
Run Code Online (Sandbox Code Playgroud)
并像这样调用它:(使用旧语法)
myFunction(condition, new Runnable() {
@Override
public void run() {
otherFunction();
}
});
Run Code Online (Sandbox Code Playgroud)
或者使用 Java 8 中新的 lambda 语法(主要是上面的简写):
myFunction(condition, () -> {otherFunction();}}
Run Code Online (Sandbox Code Playgroud)