Java 8中的消费者lambda [英] Consumer lambda in Java 8

查看:570
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆