我已经扫描了多个链接,但没有找到适用于 Java 8 Lambda 表达式的简单解决方案。我发现的最有用的提示是 Java 8 Lambdas但并没有真正满足我的兴趣。
我想在我的代码中实现重复出现的模式:
List<?> content=retrieveContent(strFilter);
if (!content.isEmpty())
setField1(content.get(0));
我想把它简单化为
retrieveContent(strFilter, this::setField1)
但不知何故我没有正确获得语法 - 特别是对于方法。我可以将它作为一个字符串来调用 if via method ,但它容易出现错别字……还有其他想法吗?
最佳答案
听起来您正在寻找 Consumer
,只要您使用 <?>
以外的值填写泛型,它就会起作用。 .
例如:
private List<Object> retrieveContent(String strFilter, Consumer<Object> firstItemConsumer) {
List<Object> list = new ArrayList<>();
// Build the return...
if(!list.isEmpty()) {
firstItemConsumer.accept(list.get(0));
}
return list;
}
然后可以调用:
List<Object> content = retrieveContent(strFilter, this::setField1);
关于Java 8 : Method as parameter with Lambda reference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42559810/