Java 8:方法作为Lambda引用的参数

LeO*_*LeO 2 java lambda

我已经扫描了几个链接,但没有找到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)但不知怎的,我没有正确的语法 - 特别是对于方法.我可以做一个字符串,如果通过方法调用,但比它容易出现错别字......还有其他想法吗?

nic*_*ckb 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;
}
Run Code Online (Sandbox Code Playgroud)

然后可以调用:

List<Object> content = retrieveContent(strFilter, this::setField1);
Run Code Online (Sandbox Code Playgroud)