Lambda表达式(Jdk1.8之后出现)
- λ希腊字母,英文名称为Lambda
- 避免匿名内部类定义过多
- 其本质是函数式编程
(params) ->expression[表达式]
(params) ->statement[语句]
(params) ->{statement}
例:
a->System.out.println("Lambda表达式测试-->"+a);
new Thread(()-> System.out.println("Lambda表达式测试")).start();
简化步骤实例:
定义函数式接口,实现类--->静态内部类--->局部内部类--->匿名内部类(逐步简化)
package com.lambda.demo01;
/**
* @Author suaxi
* @Date 2020/11/25 11:21
*/
public class TestLambda01 {
//3、静态内部类
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();
}
}
//1、定义一个函数式接口
interface ILike{
void lambda();
}
//2、实现类
class Like implements ILike{
@Override
public void lambda() {
System.out.println("I like lambda1");
}
}
Lambda
表达式总结:
package com.lambda.demo01;
/**
* @Author suaxi
* @Date 2020/11/25 16:24
*/
public class TestLambda02 {
public static void main(String[] args) {
DisLike disLike = null;
/*//1、lambda表达式简化
DisLike disLike = (int a) ->{
System.out.println("lambda表达式测试"+a);
};
//简化1:参数类型
disLike = (a) ->{
System.out.println("lambda表达式测试"+a);
};
//简化2:简化括号
disLike = a -> {
System.out.println("lambda表达式测试"+a);
};
//简化3:去掉花括号
disLike = a -> System.out.println("lambda表达式测试"+a);
disLike.dlike(1);*/
//多个参数时
disLike = (a,b) ->{
System.out.println("lambda表达式测试"+a);
System.out.println("lambda表达式测试"+b);
};
disLike.dlike(1,2);
//总结:
//1、lambda表达式只有在一行代码的情况下才能简化为一行,如果有多行,则需用代码块包裹
//2、函数式接口是前提
//3、多个参数也可以去掉参数类型(要去掉就都去掉),有多个参数的时候不能像简化3一样去掉括号,
// 单个参数时可以简化括号,多个参数时必须加上括号
}
}
interface DisLike{
void dlike(int a,int b);
}
评论 (0)