我需要创建如下代码:
this.getPendingDocuments()
.forEach((this::documentProcessed).andThen(this::createAuditory));
所以我的意思是,我需要将两个函数应用于同一个元素。
有什么想法吗?
编辑
编译器告诉我:
[Java]此表达式的目标类型必须是功能接口
答案 0 :(得分:3)
您可以编写一个执行两个方法的lambda表达式:
this.getPendingDocuments()
.forEach(doc -> {
this.documentProcessed(doc);
this.createAuditory(doc);
});
答案 1 :(得分:2)
当您使用forEach()时,您可以在其中添加更多功能……像这样
this.getPendingDocuments()
.forEach( element -> {
this.documentProcessed(element);
this.createAuditory(element);
});
答案 2 :(得分:1)
您必须 target 您的方法引用功能接口类型。在这种情况下,forEach
需要一个Consumer
实例:
Consumer<Document> processDocument = this::documentProcessed;
this.getPendingDocuments().forEach(processDocument.andThen(this::createAuditory));
以上代码使用Consumer.andThen
链接消费者。当然,这两种方法都应接受一个Document
实例作为参数(或Iterable
方法返回的getPendingDocuments()
元素的类型)。