java8 函数编程Consumer使用详解

位置:首页>文章>详情   分类: 教程分享 > Java教程   阅读(943)   2023-03-28 11:29:14

Consumer 源码

package java.util.function;

import java.util.Objects;


@FunctionalInterface
public interface Consumer<T> {


    void accept(T t);


    default Consumer<T> andThen(Consumer<? super T> after) {
        Objects.requireNonNull(after);
        return (T t) -> { accept(t); after.accept(t); };
    }
}

从源码来看,Consumer函数主要有两个方法,accept和andThen。

accept 用于接受函数参数,注意Consumer函数不会返回任何值,可理解为委托处理。
andThen 用于链接多个函数执行

Consumer 使用

演示一

建立演示方法:
    public static void t1(){
        Consumer<Integer> cal=x-> {
            x=x*10;
            System.out.println(x);
        };
        cal.accept(20);
    }
执行结果:
200
 

演示二


创建一个car汽车类
/**
 * 汽车
 */
public class Car {

   private String name;
   private String company;
    /**
     * 设置名称并返回当前对象
     * @param name
     * @return
     */
    public Car setName(String name){
        this.name=name;
        return this;
    }

    /**
     * 设置公司并返回当前类
     * @param company
     * @return
     */
    public Car setCompany(String company){
        this.company=company;
        return this;
    }

    @Override
    public String toString() {
        return "name:"+name+" company:"+company;
    }
}
创建演示方法:
    public static void t2(Consumer<Car> consumer){
        Car car=new Car();
        consumer.accept(car);
        System.out.println(car.toString());
    }

    public static void main(String[] args) {

        t2(Car->Car.setName("长安cs 85").setCompany("长安"));

    }
执行结果:
name:长安cs 85 company:长安

演示三

    public static void t3(){
        Consumer<Car> setNameFn=car -> {car.setName("长城H6汽车");};
        Consumer<Car> setCompanyFn=car -> {car.setCompany("长城公司");};
        Car car1=new Car();
        setNameFn.accept(car1);
        System.out.println(car1);

        Car car2=new Car();
        //使用andThen链接多个函数执行
        setNameFn.andThen(setCompanyFn).accept(car2);
        System.out.println(car2);
    }
执行结果:
name:长城H6汽车 company:null
name:长城H6汽车 company:长城公司

 
地址:https://www.leftso.com/article/1013.html

相关阅读

Consumer 源码package java.util.function; import java.util.Objects; @FunctionalInterface public i...
java8 Function函数编程详解Function函数基础定义和使用 public static void t1(){ Function&lt;Integer,Int...
是什么Predicatejava8,java.util.function中 Function, Supplier, Consumer, Predicate和其他函数式接口广泛用在支持lambda...
java8 Function 应用场景 --代码重构旧代码: import org.springframework.beans.BeanUtils; import java.util.func...
Supplier详解源码分析:package java.util.function; @FunctionalInterface public interface Supplier&lt;T&...
@RequestMapping中produces和consumes 也包括@RequestMapping的子注解类,如@GetMapping,@PostMapping等produces 配置什么...
Java编程软件有哪些?常用Java编程软件下载、安装和使用说明
jdk8新特性流的使用
Java编程中Parameterized Test-Junit的使用构造函数通过注解@Parameter注入