四大内置核心函数式接口
Java8 内置的四大核心函数式接口
- Consumer : 消费型接口 --> void accept(T t);
- Supplier : 供给型接口 -->T get();
- Function<T, R> : 函数型接口 -->R apply(T t);
- Predicate : 断言型接口 -->boolean test(T t);
一、 Consumer : 消费型接口
代码如下:
//Consumer<T> 消费型接口 :
@Test
public void test1() {
happy(100, (m)->System.out.println("本次消费共"+m));
}
/** 这个就是应用了一个消费型接口的方法 */
public void happy(double money, Consumer<Double> con){
con.accept(money);
}
传进去一个参数,对这个参数进行一个操作,并且没有返回值:
二、Supplier : 供给型接口
供给型接口没有传参,但是有返回值。
三、Function<T, R> : 函数型接口
传进去一个值,返回一个值
四、Predicate : 断言型接口
传进入参数,最后返回的是一个布尔值:
其他的接口
方法引用与构造器引用
方法引用:
方法引用:若Lambda体中的内容有方法已经实现了,我们可以使用“方法引用”(可以理解为方法引用是Lambda表达式的另外一种表现形式)
使用注意:
- Lambda体中调用方法的参数列表与返回值类型,要与函数式接口中的抽象方法里面的参数列表和返回值类型要一致!
- 若Lambda参数列表中第一参数是实例方法的调用者,而第二个参数是实例方法的参数时,可以使用ClassName::method
主要有三种语法格式:
- 对象::实例方法名
- 类::静态方法名
- 类::实例方法名
对象::实例方法名
这种使用方式是使用实例对象的引用来进行调用;
在使用方法引用是有要求的:要实现的抽象方法里面要传入的参数类型要与我们的方法引用里面的参数类型要一致:
我们还可以再举一个例子:
这里就是可以使用方法引用来进行表示:
类::静态方法名
类::实例方法名
当传入的两个参数,前面的参数是方法的调用者,而后面的参数是方法的参数的时候,那我们就是可以使用类::实例方法名的方式来进行调用;
构造器引用:
语法格式:
ClassName::new
注意:需要调用的构造器的参数列表要与函数式接口中的抽象方法的参数列表要保持一致
调用哪个构造器就取决于函数式接口中的方法里面的参数列表有几个参数:
这个时候,就是两个参数的构造器:
数组引用
语法格式
Type::new