我已经扫描了几个链接,但没有为Java 8 Lambda表达式找到一个简单的解决方案。我发现的最有用的提示是Java 8 Lambdas,但并不能满足我的兴趣。
我想在我的代码中实现reoccuring模式:
List<?> content=retrieveContent(strFilter);
if (!content.isEmpty())
setField1(content.get(0));
我希望将其简单化为
retrieveContent(strFilter, this::setField1)
但不知怎的,我不能正确地获得语法 - 特别是对于该方法。我可以把它作为一个字符串来调用if via method,但是它容易出现错别字...还有其他想法吗?
答案 0 :(得分:6)
听起来您正在寻找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);