传递函数调用方法参数java

时间:2018-01-25 00:28:31

标签: java lambda

我是Java 8的新手,并尝试使用lambda,功能界面来优化我的一些代码。

我的演示方法:

private SampleReturn getExecRequest() {
    //some code       
    SampleReturn sample = cache.get("exec key");
    return sample;
}

现在调用此方法,如果返回值不为null,则调用其他一些方法。这件作品是2-3个地方。 E.g:

SampleReturn sample = getExecRequest();
if (sample != null && sample.valid()) {
    saveRecords(records);
    insertMessages(messageId, Subject, Sender);
}

另一种用法:

SampleReturn sample = getExecRequest();
if (sample != null && sample.valid()) {
    saveRecords(records);
    saveSamples(records);
}

根据示例的输出,我调用了一些不同的函数,但模式正在重复。我想了解我是否可以使用任何java 8功能接口并优化此部分,我可以将代码直接传递给getExecRequest(),该方法可以检查条件,然后在需要时调用其他函数。 / p>

1 个答案:

答案 0 :(得分:1)

您可以将Runnable传递给方法并有条件地执行:

private void doExecRequest(Runnable callback) {
    //some code       
    SampleReturn sample = cache.get("exec key");
    if (sample != null && sample.valid()) {
        callback.run();
    }
}

并称之为:

doExecRequest(() -> {
    saveRecords(records);
    insertMessages(messageId, Subject, Sender);
});

或者:

doExecRequest(() -> {
    saveRecords(records);
    saveSamples(records);
});