我是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>
答案 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);
});