我已经扫描了几个链接,但没有找到Java 8 Lambda表达式的简单解决方案.我发现最有用的提示是在Java 8 Lambdas上,但并没有真正满足我的兴趣.
我想在我的代码中实现reoccuring模式:
List<?> content=retrieveContent(strFilter);
if (!content.isEmpty())
setField1(content.get(0));
Run Code Online (Sandbox Code Playgroud)
我想简单一点
retrieveContent(strFilter, this::setField1)
但不知怎的,我没有正确的语法 - 特别是对于方法.我可以做一个字符串,如果通过方法调用,但比它容易出现错别字......还有其他想法吗?
听起来你正在寻找一个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;
}
Run Code Online (Sandbox Code Playgroud)
然后可以调用:
List<Object> content = retrieveContent(strFilter, this::setField1);
Run Code Online (Sandbox Code Playgroud)