JAVA8 Consumer<T> 和 BiConsumer<T,U> 接口

Consumer接口是Java 8引入的函数式接口,用于表示接受一个输入参数且无返回值的操作。它可以用于消费数据,例如在链式操作中按顺序执行多个消费动作。示例展示了如何创建和组合Consumer,以及将其作为回调函数使用。此外,还提到了与Consumer相关的其他类似接口,如DoubleConsumer、IntConsumer等,它们分别适用于不同类型的参数。
摘要由CSDN通过智能技术生成

Consumer是一个消费队列接口,代表了接受一个输入参数并且无返回的操作,是JDK 1.8 新增加的函数接口。

@FunctionalInterface
public interface Consumer<T> {

    /**
     * 将此函数应用于给定参数
     * 真正执行函数接口的方法
     */
    void accept(T t);

    /**
     * 消费链,根函数执行后,执行after函数,参数不变
     */
    default Consumer<T> andThen(Consumer<? super T> after) {
        Objects.requireNonNull(after);
        return (T t) -> { accept(t); after.accept(t); };
    }
}

这个接口,接收一个泛型的参数T,然后调用accept。

    Consumer<Integer> consumer = x -> {
      int a = x + 2;
      System.out.println(a);// 12
    };
    consumer.accept(10);

为什么说是消费队列接口呢?

看例子:

    Consumer<Integer> consumer1 = x -> {
      int a = x + 2;
      System.out.println(a);// 12
    };
    Consumer<Integer> consumer2 = x -> {
      int a = x + 3;
      System.out.println(a);// 13
    };
    Consumer<Integer> consumer3 = x -> {
      int a = x + 4;
      System.out.println(a);// 14
    };
    consumer1.andThen(consumer2).andThen(consumer3).accept(10);
    // 12
    // 13
    // 14

上面的例子,10按顺序被三个消费者消费了。

Consumer另一个作用,当做回调函数使用。

public class ConsumerDemo {

    public void handle(Integer x,Consumer<Integer> consumer){
        consumer.accept(x++);//回调
    }
    public static void main(String[] args) {
        ConsumerDemo demo = new ConsumerDemo();
        int b = 1;
        demo.handle(10, x -> {
            int a = x + b + 2;
            System.out.println(a);// 13
        });
    }
}

BiConsumer 与 Consumer是一样的使用方式,区别是Consumer只能有一个参数,BiConsumer可以有两个。

了解了Consumer,BiConsumer ,其他的也就一目了然了:

DoubleConsumer:代表一个接受double值参数的操作,并且不返回结果。

IntConsumer:接受一个int类型的输入参数,无返回值 。

LongConsumer:接受一个long类型的输入参数,无返回值。

ObjDoubleConsumer<T>:接受一个object类型和一个double类型的输入参数,无返回值。

ObjIntConsumer<T>:接受一个object类型和一个int类型的输入参数,无返回值。

ObjLongConsumer<T>:接受一个object类型和一个long类型的输入参数,无返回值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值