函数式接口
函数式接口一般使用形式:
在类中先定义一个方法method,参数传递,再加上函数式接口类型参数
再调用method方法,在传入参数时,传入指定数据,再使用函数时接口来作为参数(类似于匿名内部类)
public class Myclass{
T method(ElemType e,函数式类型 f){
返回值 = f.唯一抽象方法(e);
}
void main(){
method(e,()->{实现方法作用})
}
}
1. Supplier生产型接口
T get():用来生产一个指定类型的数据对象
ElemType method(Supplier<ElemType> sup){
return sup.get();
}
void main(){
method(()->{return new ElemType();})
}
2. Consumer消费型接口
void accept(ElemTpte e):用来使用一个方法,使用完就完了,并没有返回结果
Consumer andThen(consumer):一个消费完以后再消费另一个。相当于对一个数据操作完成后再进行另一个操作。比如:我们对一个字符串先进行全部大写操作,再进行小写操作。两者是顺序进行的
void method(ElemType e,Consumer<ElemType> con){
con.accept(e);
}
void main(){
ElemType elem;
method(elem,(lelem)->{对lelem进行一系列操作;});
}
3. Predicate判断型接口
boolean test(ElemType e):对传入数据按照自己规则进行判断是否符合
Predicate and(predicate):**对数据进行两次判断,是“且”的逻辑关系
Predicate or(predicate):“或”的逻辑关系
**Boolean negate()**对得出的结果进行取反操作,“非”的逻辑关系
boolean method(ElemType e,Predicate<ElemType> pre){
return pre.test(e);
}
void main(){
ElemType e;
method(e,(elem)->{判断elem是否xxx;});
}
4. Function转换型接口
ElemTypeB apply(ElemTypeA):对传入数据进行转换,将ElemTypeA转成ElemTypeB类型
Function<ElemTypeA,ElemTypeB> andThen(function<ElemTypeC,ElemTypeA>)
void method(ElemTypeA a,Function<ElemTypeA,ElemTypeB> fun){
fun.apply(a)//将a的数据类型(ElemTypeA)转成ElemTypeB,即:Function接口的泛型由第一 个转成第二个
}
void main(){
ElemTypeA a;
method(a,(elema)->{return a转成ElemTypeB类型});
}