Lambda表达式

  1. 基本介绍

  • 组成Lambda表达式的三要素:形式参数、箭头、代码块

  • 使用格式:(形式参数)-> {代码块};

  • 使用前提:有接口,接口中有且仅有一个抽象方法

//带参数,带返回值的形式
public static void main(String[] args){
    useAddable((int x, int y) -> {    //形式参数及返回值要与接口方法保持一致。
        return x + y;
    })
}
private static void useAddable(Addable a){
    int sum = add(10, 20);
    System.out.println(sum);
}
//创建一个接口
public interface Addable{
    int add(int a, int b);
}
  1. Lambda与匿名内部类的对比:

  • 所需类型不同:匿名内部类可以是接口,抽象类,具体类,Lambda只能是接口;

  • 使用限制不同:当接口中包含多个抽象方法时,仅能使用匿名内部类;

  • 实现原理不同:匿名内部类编译后会产生单独的字节码文件,Lambda表达式则没有,其对应字节码文件是在运行时动态生成;

//匿名内部类
new Thread(new Runnable(){
    @override
    public void run(){
        System.out.println("多线程启动了!")
    }
}).start();

//Lambda表达式形式
new Thread(() -> {
    System.out.println("多线程启动了!")
}).start();
  1. 省略模式:

  • 参数类型(int,String等)可以省略,但多个参数时不能仅省略一个:(s)-> {};

  • 若参数有且仅有一个,小括号可以省略:s -> {};

  • 如果代码语句只有一条,可以省略大括号和分号,甚至return也可省略:s -> System.out.println("123")

  1. 注意事项

  • 必须有接口,且有且仅有一个抽象方法;

  • 必须要有上下文环境,不能单独存在;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值