> 文档中心 > java新特性之lambda表达式

java新特性之lambda表达式

嘿,大家好!今天咱们聊聊Java中那位“代码减肥大师”——lambda表达式。简单概括,这是一位能让你的代码看起来更加苗条、性感的小能手。它就像是给代码穿上了“语法糖衣”,让你在写着写着的时候,突然觉得自己像个高级码农。

那么,lambda到底是个啥呢?简单概括,它是一种简洁的代码写法,让咱们可以少写点重复的代码,多些优雅的表达。比如说,以前我们要创建一个线程,得写好多行,现在用lambda,几行代码就能搞定了。是不是很酷?

不过,lambda也不是万能的。它只能在那些“函数式接口”(只有一个抽象方法的接口)中使用。要是你的接口有多余一个的方法,那它就没办法使唤了。这点要记住哦!

还有一点,虽然lambda会让代码看起来更简洁,但有时候它也会让你的代码变得有点难读。所以,别为了简短而滥用它,得在简洁和可读性之间找平衡哦!

总之,lambda表达式是个不错的工具,学会它,让你的代码更有韵味!对了,要是对函数式编程感兴趣,不妨多研究研究Stream和方法引用,可能会发现新的乐趣呢!

目录

一、什么是lambda表达式

二、lambda表达式的格式以及转换思维过程

1、标准格式

2、省略格式

3、lambda表达式的演进过程

三、lambda表达式的条件

四、lambda表达式的案例


一、什么是lambda表达式

        按照我个人理解,lambda表达式实际上就是java1.8以后,提供的一种简化固式代码的书写形式。是一种函数式编程思想,强调做什么什么?而不是怎么做?

        正所谓,凡事具有两面性,其有优点,那么可它可能也会有缺点。lambda表达式,在一定程度上简化了代码的写法,但是也模糊化了代码的内部结构,从而在阅读理解上会稍微变得困难。不过这也是一个熟悉的过程,一旦习惯了,可以少写很多重复的代码。

        不管是lambda表达式,还是新特性中的方法引用Stream都是简化代码写法的一种方式,我们在遇到可以简化的方法时进行简化,但是如果简化不了,不可强行简化。

二、lambda表达式的格式以及转换思维过程

1、标准格式

(参数类型 参数名称) -> { 代码语句 }

格式说明:

  • 小括号内的语法与传统方法参数列表一致:无参数则留空;多个参数则用逗号分隔。
  • ->是新引入的语法格式,代表指向动作。
  • 大括号内的语法与传统方法体要求基本一致。

2、省略格式

1. 小括号内参数的类型可以省略;

2. 如果小括号内有且仅有一个参,则小括号可以省略;

3. 如果大括号内有且仅有一个语句,则无论是否有返回值,都可以省略大括号、return关键字及语句分号。

参数 -> 代码语句

3lambda表达式的演进过程

我们以创建新的运行线程为例来写阐述演进过程。

A、传统写法

public static void main(String[] args) {

Thread t = new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("
运行了一个新线程");
    }
});

t.start();

}

B、标准写法

public static void main(String[] args) {

Thread t = new Thread(() ->{System.out.println("运行了一个新线程");});
t.start();

}

C、简化写法

public static void main(String[] args) {

Thread t = new Thread(() ->System.out.println("运行了一个新线程"));
t.start();

}

三、lambda表达式的条件

Lambda的语法非常简洁,完全没有面向对象复杂的束缚。但是使用时有几个问题需要特别注意:

  1. 使用Lambda必须具有接口,且要求接口中有且仅有一个抽象方法。
  1. 无论是JDK内置的RunnableComparator接口还是自定义的接口,只有当接口中的抽象方法存在且唯一时,才可以使用Lambda。
  1. 使用Lambda必须具有上下文推断。
  1. 也就是方法的参数或局部变量类型必须为Lambda对应的接口类型,才能使用Lambda作为该接口的实例。

备注:有且仅有一个抽象方法的接口,称为函数式接口

如下是Runnable的接口,满足上述要求:

四、lambda表达式的案例

除了上面讲的Runnable案例,我们再举例一个数组排序的例子。

A、传统写法