Lamda表达式基础

261 阅读2分钟

「这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战」。

1.为什么使用lambda表达式?

  • 避免匿名内部类定义过多
  • 可以让代码看起来很简洁
  • 去掉一堆没有意义的代码,只留下核心的逻辑。

补充: 函数式接口是lambdab表达式的关键所在。

函数式接口的定义: 任何接口,如果只包含唯一一个抽象方法,那就是函数式接口。 如:public interface Runnable{pulic abstract void run();}。我们就可以通过lambda表达式来创建该接口的对象

2.lambda简化历程

须知:lambda表达式是java 8的新特性,为了适应人们需求,简化代码量,前提就是需要函数式接口。

lambda的简化顺序  :外部类->静态内部类->局部内部类->匿名内部类->lambda

具体实现:

  • 首先定义一个函数式接口

定义一个函数式接口ILike,有一个lambda()方法。

image.png

  • 外部类实现方法

创建一个外部Like类,实现ILike接口,输出一个信息。主方法测试:创建Like对象,来调用lambda()方法。

image.png

image.png

  • 静态内部类

创建一个静态内部类Like2,实现ILike接口,主方法测试:创建Like2的对象,来调用lambda方法。

image.png

  • 局部内部类 创建一个局部内部类Like3,实现ILike接口,主方法测试:创建Like3的对象,来调用lambda方法。

image.png

  • 匿名内部类

匿名内部类,直接获得类对象,调用lambda()方法。

image.png

  • lambda简化

lambda以不同的表达式形式直接获取对象,调用lambda()方法。

image.png

3.lambda简化形式

基础语法:

():用来描述参数列表

{}:用来描述方法体 有时可以省略

->: Lambda运算符 读作goes to

简化规则:

以有参形式,来说明。

1.简化参数类型

可以不写参数类型,但是必须所有参数都不写:

image.png

2.简化参数小括号

如果只有一个参数则可以省略参数小括号省略:

image.png

3.简化方法体大括号

  • 如果方法体只有一条语句,则可以省略方法体大括号

image.png

  • 如果方法体中唯一的一条语句是一个返回语句 ,则省略大括号的同时也必须省略return。

image.png