###前言:
1.我们知道只要使用Lambda表达式,那么一定要有函数式接口的支持;但是如果我们没使用一个Lambda表达式都要自己创建一个接口,
这样很造成很大的不便。于是java8的工程师们已经帮我们把常用的函数式接口都帮我们定义好,拿来直接使用即可。
如果不能满足你的需求,那么这时你才需要自己定义函数式接口。
下面是我们常用的函数式接口:
###知识点一:消费性函数式接口
####特点:
1.接受一个或者多个参数,没有返回值
####典型函数式接口(常用):
1.Consumer<T>
void accept(T t);//接受一个泛型类型参数无返回
2.BiConsumer<T, U>
void accept(T t, U u);//接受两个泛型类型参数无返回
3.DoubleConsumer
void accept(double value);//接收double类型,无返回
4.IntConsumer
void accept(int value);//接收int类型,无返回
5.LongConsumer
void accept(long value);//接收long类型,无返回
6.ObjDoubleConsumer<T>
void accept(T t, double value);//接收两个参数,一个泛型,一个double
7.ObjIntConsumer<T>
void accept(T t, int value);//接收两个参数,一个泛型,一个int
8.ObjLongConsumer<T>
void accept(T t, long value);//接收两个参数,一个泛型,一个long
####举例:这里使用Consumer举例,接收一个参数无返回值,其他的用法基本相同
//需求:消费给定的monkey,但是消费方式没有给定,需要具体消费的时候指定
@org.junit.Test
public void test1(){
//消费100,洗澡
consumerMonkey(100,(m) -> System.out.println("洗澡花费了