传递函数调用方法参数java
我是Java8新手,尝试使用lambda函数接口优化我的一些代码 我的演示方法:传递函数调用方法参数java,java,lambda,Java,Lambda,我是Java8新手,尝试使用lambda函数接口优化我的一些代码 我的演示方法: private SampleReturn getExecRequest() { //some code SampleReturn sample = cache.get("exec key"); return sample; } 现在调用此方法,如果返回值不为null,则调用其他一些方法。这件作品有2-3个位置。例如: SampleReturn sample = getExec
private SampleReturn getExecRequest() {
//some code
SampleReturn sample = cache.get("exec key");
return sample;
}
现在调用此方法,如果返回值不为null,则调用其他一些方法。这件作品有2-3个位置。例如:
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);
}
根据示例的输出,我调用了一些不同的函数,但模式是重复的。我想了解我是否可以使用任何Java8功能接口并优化这一部分,在这里我可以将要执行的代码直接传递到
getExecRequest()
该方法可以检查条件,然后在需要时调用其他函数。您可以向该方法传递一个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);
});
或:
当然可以,把它作为消费者传递。你能解释一下怎么做吗?我试着查找一些文档,但到处都能找到唯一的示例,就是使用System.out.printlns并将它们打印出来。
示例
和记录
之间的关系是什么?有什么关系吗?并没有关系,示例只是一个包含是否应该执行下游代码的条件的对象。谢谢,我会尝试一下。您之前提到了消费者
。这两者有什么区别?为什么我不能或不应该在这里使用consumer
?consumer
接受一个输入参数。我建议这样做是因为我错误地认为记录
是由该方法生成的。
doExecRequest(() -> {
saveRecords(records);
saveSamples(records);
});