Java 8 : Method as parameter with Lambda reference

标签 java lambda

我已经扫描了多个链接,但没有找到适用于 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/

相关文章:

nhibernate - 使用 NHibernate 处理多个表的 JoinQueryOver

java - 第 1 行 SQL 语法错误

java - 强制 Hibernate 或一般 JPA 供应商使用具有多个值的 INSERT INTO?

Java:重写泛型方法

serialization - 有没有办法在 Java 8 中使用 Files.lines 读取序列化文件

C++11 将 shared_ptr 转换为 vector 和类

c# - 在事件处理程序上使用 lambda exp 时如何等待多个任务

c# - 如何使用 Lambda 从列表中获取最后 x 条记录

java - 用java计算bittorent info_hash

java - 如何对 Jsoup 文档进行转义?