Вы можете попробовать этот код. Может быть полезно.
от вопрос уже есть ответ здесь:
Почему ссылка на метод Java с типом возврата соответствует интерфейсу потребителя? 2 ответаИнтерфейс Consumer для лямбда типаT -> void
, но в следующем коде:
ЛямбдаBook::getName
принимает тип:Book->String
Я хотел бы спросить, почему он может выступать в качестве потребителя (аргумент List.forEach является потребителем).
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);
}
}