Lamda表达式
λ希腊字母表中排序第十一位的字母,英语名称为lambda
Lambda 表达式是在 Java 8 中引入的,并且成为了 Java 8 最大的特点。它使得功能性编程变得非常便利,极大地简化了开发工作。
避免匿名内部类定义过多
其实质属于函数式编程的概念
Lambda 表达式的语法与特征
一个 Lambda 表达式具有下面这样的语法特征。它由三个部分组成:第一部分为一个括号内用逗号分隔的参数列表,参数即函数式接口里面方法的参数;第二部分为一个箭头符号:->;第三部分为方法体,可以是表达式和代码块。语法如下
(params) -> expression [表达式]
(params) ->statement [语句]
(params) -> {statements}
a-> System.out.println("i like lambda -->"+a);
new Thread (()->System.out.println("多线程学习。。。")).start();
lambda表达式推导:
- 定义一个函数式接口
interface ILike{
void lambda();
}
- 实现类
class Like implements ILike{
@Override
public void lambda() {
System.out.println("i like lambda");
}
- 静态内部类
static class Like2 implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda2");
}
}
public static void main(String[] args) {
ILike like=new Like();
like.lambda();
like=new Like2();
like.lambda();
//4.局部内部类
class Like3 implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda3");
}
}
like=new Like3();
like.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();
}
简化lambda表达式
//函数式接口
interface ILove{
void love(int a);
}
//简化1.参数类型
love=(a)->{
System.out.println("i love you"+a);
};
love.love(250);
//简化2.括号
love=a -> {
System.out.println("i love you"+a);
};
love.love(521);
//简化3.去掉{}
love=a -> System.out.println("i love you"+a);
love.love(222);
总结:
- lambda表达式只能有一行代码的情况下,才能简化成为一行。如果有多行,就用代码块包裹
- 前提是接口为函数式接口
- 多个参数也可以去掉参数类型,要去掉就都去掉,必须加上括号()