java8新特性——Lambda表达式

什么是Lambda表达式?

  1. Lambda表达式,也可称为闭包,java8的重要新特性之一。
  2. Lambda表达式允许在方法的参数列表中将方法作为参数

Lambda表达式长什么样?

		InterA interA = ()->{
            System.out.println("无参数,无返回值");
        };

Lambda表达式有什么用?

  1. Lambda表达式可以使代码变得更加简单紧凑
  2. 在集合遍历和其他集合操作中可以极大的优化代码结构

Lambda表达式取代了过去的哪些东西?

在过去,对接口的应用无非是继承实现和匿名内部类。lambda可以直接对只有一个抽象方法的接口进行简单实现。

为什么要改用Lambda表达式?

使代码变得更加简单紧凑,看起来更加简洁优雅。总的来就是优化代码

Lambda表达式怎么用?

  1. lambda表达式可以对某些接口进行简单的实现,lambda规定这接口中只能有一个必须要被实现的方法,不是规定接口中只能有一个方法。另外: jdk8 中另有一个新属性:default,被default修饰的方法会有默认实现(即,被default修饰的接口方法必须有方法体,且该方法被继承时不强制重写),不是必须被实现的方法,所以不会影响lambda表达式的使用。
    综上lambda表达式所修饰的接口只能有一个抽象方法,可以有多个default修饰的方法。
  2. @FunctionalInterface
    该注解专门用来修饰函数式接口的,要求接口中的抽象方法只有一个。这个注解一般会和lambda表达式一起使用。
  3. lambda表达式基础语法——()->{}
    其中 () 用来描述参数列表(接口当中抽象方法的参数列表),{} 用来描述方法体(接口当中抽象方法的方法体),-> 为lambda运算法,读作(goes to)
public class LambdaTest {
    public static void main(String[] args) {
        InterA interA = ()->{
            System.out.println("无参数,无返回值");
        };
        InterB interB = (str)->{
            return "有参数,有返回值";
        };
        interA.begin();
        System.out.println(interB.begin("参数"));
    }
}
interface InterA{
    default void run() {

    }
    public abstract void begin();
}
interface InterB{
    default void run() {

    }
    String begin(String str);
}

Lambda表达式语法简化

  1. 参数类型可简化。要么全部不写参数类型,要么全部都写,不能部分简化。
  2. 参数小括号可简化。如果只有一个参数可以省略参数小括号。
  3. 方法体大括号可简化。如果方法体只有一条语句(包括return语句,此时无需写return关键字,直接写返回内容),则可以省略大括号。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值