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); };
}
}
accept 用于接受函数参数,注意Consumer函数不会返回任何值,可理解为委托处理。
andThen 用于链接多个函数执行
public static void t1(){
Consumer<Integer> cal=x-> {
x=x*10;
System.out.println(x);
};
cal.accept(20);
}
执行结果:
200
/**
* 汽车
*/
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