【简化代码】 Consumer接口实际应用

  • Post author:
  • Post category:其他




介绍

源码:

@FunctionalInterface
public interface Consumer<T> {

    /**
     * 抽象方法:传入一个指定泛型的参数,无返回值
     */
    void accept(T t);

    /**
     * 如同方法名字一样andThen,类似一种相加的功能(下面会举例说明)
     */
    default Consumer<T> andThen(Consumer<? super T> after) {
        Objects.requireNonNull(after);
        return (T t) -> { accept(t); after.accept(t); };
    }
}

从Consumer接口源码中我们可以看到以下特性:

1.accpet方法 有泛型入参 无返回值

2.andThen方法可以链式调用



实际运用

主要用于简化处理程序

1.简单例子

 public static void main(String[] args) {
        testConsumer();
        testAndThen();
    }
    /**
     * 一个简单的平方计算
     */
    public static void testConsumer() {
        //设置好Consumer实现方法
        Consumer<Integer> square = x -> System.out.println("平方计算 : " + x * x);
        //传入值
        square.accept(2);
    }
    /**
     * 定义3个Consumer并按顺序进行调用andThen方法
     */
    public static void testAndThen() {
        //当前值
        Consumer<Integer> consumer1 = x -> System.out.println("当前值 : " + x);
        //相加
        Consumer<Integer> consumer2 = x -> { System.out.println("相加 : " + (x + x)); };
        //相乘
        Consumer<Integer> consumer3 = x -> System.out.println("相乘 : " + x * x);
        //andThen拼接
        consumer1.andThen(consumer2).andThen(consumer3).accept(1);
    }

2.常用框架的例子

常见的如

Stream 类的 forEach 方法 List.Stream.forEach(item->dosomething)


Mybatis-plus的com.baomidou.mybatisplus.core.conditions.interfaces.Nested#or(java.util.function.Consumer)

在这里插入图片描述

总结:Consumer接口主要是用于简化处理程序,用好Consumer接口的泛型,透传泛型的功能,可以大大简化代码。


【简化代码】 Java 泛型 提升抽象能力



【简化代码】Supplier接口实际运用



【简化代码】Comsumer复杂实际运用


多总结,多学习 这样就不用加晚班。



版权声明:本文为hello__word__原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。