lamdba表达式
1. lamdba 包含参数列表,->,lamdba主体.
2. 特点
1. 匿名: 没有一个明确的名字.写的少而想的多
2. 函数: 不像方法一样属于某个类,但是像方法一样,包含参数列表,函数主体,返回类型,还可能有抛出的异常列表.
()-> 32; // 返回一个int类型数据
()->{return 32;} // 返回一个int类型的数据
函数式接口
# 概念
接口中只有一个抽象方法,注意:是只有一个.
例如:
public interface a{
int sum(int a,int b);
}
public interface b extends a{
int add(int a,int b);
}
public interface c{
}
只有 a 才是一个函数式接口;
b因为继承了a,所有b中包含了两个抽象方法,所以b不能是函数式接口;
c中不包含任何抽象方法,所以c也不是函数式接口
# 用途
lamdba表达式,允许你直接以内联的形式为函数式接口的抽象方法提供实现,并把整个表达式作为函数式接口的实例.
例如:
Runnable 接口中只定义了一个run方法,所以Runnable 是一个函数式接口,我们创建一个Runnbale的实现就可以这样写:
Runnable r = ()->{System.out.println("----------------------");};
这时我们有一个方法,接受的参数是Runnable类型的,如下:
public static void process(Runnable r){
r.run();
}
我们就可以这样写了:
process(r);
process(()->{System.out.println("----------------------");});
@FunctionInterceptface
该注解是标明一个接口为函数式接口,如果该接口不符合函数式接口,会抛出错误信息