Lambda表达式


前言

  本文主要介绍Lambda表达式,函数式思想则尽量忽略面向对象的复杂语法:“强调做什么,而不是以什么形式去做”而我们要学习的Lambda表达式就是函数式思想的体现。


一、Lambda表达式是什么?

  lambda是一个匿名函数,我们可以把lambda表达式理解为是一段可以传递的代码。lambda简明的地将代码或方法作为参数传递进去执行。“函数式编程”其核心是把函数作为值。


二、具体方法

1.lambda表达式的使用前提

  (1)有一个接口,并且接口中只有一个抽象方法。
  (2)必须要有上下文环境,才能推导出Lambda对应的接口。


2.标准格式

   (形式参数)->{代码块}


注意:
形式参数如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可。
->由英文中画线和大于符号组成,固定写法。代表指向动作。
代码块是我们具体要做的事情,也就是以前我们写的方法体内容。

  下面附上一段代码:

lambda方法
       useFlyable((String s) ->{
           System.out.println(s);
            System.out.println("晴天");
       });
       //简写
       useFlyable( s -> System.out.println("晴天"));

3.应用场景

  
  | 有参无返回值抽象方法 | |
  |-无参无返回值抽象方法-||
  | 有参有返回值抽象方法| |
  就以有参有返回值抽象方法举例:

public interface Addable {
    int add(int x,int y);
}

public class AddableDemo {
    public static void main(String[] args) {
        //在主方法中调用useAddable方法
        useAddable((int x,int y) -> {
            return x + y;
        });

    }

    private static void useAddable(Addable a) {
        int sum = a.add(10, 20);
        System.out.println(sum);
    }
}

## 4.Lambda表达式的省略模式

  1.如果只有一个参数,小括号可以省略。
  2.如果代码块只有一条语句,可以省略大括号和分号,以及return关键字。
  3.参数类型可以省略

  //lambda方法
//        useFlyable((String s) ->{
//            System.out.println(s);
//            System.out.println("晴天");
//        });
        useFlyable( s -> System.out.println("晴天"));
//        useAddable((int x,int y)->{
//            return x+y;
//        });
//简写

        useAddable(( x,y)-> x+y);

## Lambda表达式和匿名内部类的区别
不同点阐述
所需类型不同匿名内部类:可以是接口,也可以是抽象类,还可以是具体类- Lambda表达式:只能是接口。
实现原理不同匿名内部类:编译之后,产生一个单独的.class字节码文件 - Lambda表达式:编译之后,没有一个单独的.class字节码文件。对应的字节码会在运行的时候动态生成。
使用限制不同如果接口中有且仅有一个抽象方法,可以使用Lambda表达式,也可以使用匿名内部类;如果接口中多于一个抽象方法,只能使用匿名内部类,而不能使用Lambda表达式。

三、总结

  以上就是今天要讲的内容,本文仅仅简单介绍了Lambda表达式的使用方法以及部分注意事项,若有不足,请指正!


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值