Lambda表达式
Lamda表达式
为什么要使用lamba表达式
-
$ \lambda$希腊字母表中排序第十一位的字母,英语名称为Lamda
-
避免匿部内部类定义过多
-
其实质属于函数式编程的概念
理解Functional Interface(函数式接口)是学习Java8 lambda表达式的关键所在。
函数式接口的定义:
-
任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
-
对于函数式接口,我们可以通过lambda表达式来创建接口的对象。
@FunctionalInterface public interface Runnable { public abstract void run(); }
@FunctionalInterface 注解标识是一个函数式接口,Runnable和Callable就是一个典型的函数式接口。
外部类-->静态类-->局部内部类-->匿名内部类-->Lambda表达式
//5、匿名内部类,没有类的名称,必须借助接口或者父类
like=new ILike() {
@Override
public void lambda() {
System.out.println("i like lambda4");
}
};
like.lambda();
//6、Lambda简化
like=()->{
System.out.println("i like lambda5");
};
like.lambda();
}
Lamda表达式简化
// 1、lambda表示简化
// ILove love=(int a)->{
// System.out.println("i love you 1-->"+a);
// };
// //简化1.参数类型
// love =(a)->{
// System.out.println("i love you 2-->"+a);
// };
// //简化2.简化括号
// love=a -> {
// System.out.println("i love you 3-->"+a);
// };
//简化3.去掉花括号(假如只有一行才可以)
love=a -> System.out.println("i love you 4-->"+a);
总结:
lambda表达式只能有一行代码情况下才能简化成为一行,如果有多行,那么就用代码块包裹
前提是接口为函数式接口(只能有一个方法)
多个参数也可以同样去掉参数类型,要去掉就都去掉,且各参数必须加上括号。