Java 8中的消费者lambda [英] Consumer lambda in Java 8
本文介绍了Java 8中的消费者lambda的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Consumer接口适用于类型为 T的lambda - > void
,但在以下代码中是:
The Consumer interface is for lambda of type T -> void
, but in the following code is:
lambda Book :: getName
采用类型: Book-> String
,我会问为什么它可以充当消费者(List.forEach的参数是消费者)。
The lambda Book::getName
takes the type: Book->String
, I would ask why it can act as a Consumer(List.forEach's argument is Consumer).
class Book {
private String name;
public Book(String name) {
this.name = name;
}
public String getName() {
System.out.println(name);
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class BookTest {
@Test
public void testBook() {
List<Book> books = new ArrayList<>();
books.add(new Book("A"));
books.add(new Book("D"));
books.add(new Book("C"));
books.add(new Book("B"));
Function<Book, String> function = Book::getName;
books.forEach(Book::getName);
//error here
//books.forEach(function);
}
}
推荐答案
您可以将非void方法用作Consumer。只需丢弃返回值,即可调整 。
You can use a non-void method as a Consumer. It will be adapted by just discarding the return value.
这篇关于Java 8中的消费者lambda的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文