美文网首页
Java lambda表达式

Java lambda表达式

作者: 乐壹 | 来源:发表于2020-09-19 15:19 被阅读0次

Lambda表达式是一种带有参数变量的表达式,参数变量可以不传;也可以将其视为一种匿名函数。Lambda表达式没有名字,但是具有参数列表、函数主体、返回类型,甚至还可以抛出异常。

语法

Lambda表达式基本语法:
表达式-风格: (parameters) -> expression块-风格: (parameters) -> { expression; }

  • () -> {}
  • () -> "this is string!"
  • i -> i++
  • (i, j) -> i + j
  • (int i, int j) -> i + j
  • (int i, int j) -> {int s = i + j; system.out.println("i + j = " + s); }

根据上面的例子,可以看出:

  • Lambda表达式参数列表可以忽略,但小括号不可以忽略,当只有一个参数时,小括号才可以忽略;
  • Lambda表达式返回类型不需要指定,也可以为空,Java编译器可以根据上下文推导出其类型;
  • Lambda表达式参数类型可以忽略,Java编译器可以根据上下文推导出其类型;
    PS: 如果一个lambda表达式只在某些分支返回一个值,而在另外一些分支不返回值,这是不合法的。例如,(int x)->{if(x>=0)return 1;}就不合法。

使用

Lambda表达式可以直接以内联的形式为函数式接口的抽象方法提供实现,并把整个表达式作为函数式接口的实例;匿名内部类也可以完成同样的事情,只不过比较笨拙。
一言以蔽之,哪里需要函数式接口,哪里就可以使用Lambda表达式。

函数式接口

函数式接口是只定义一个抽象方法的接口,这个抽象方法就是这个接口的函数描述符,和Lambda表达式的函数描述是相同的。
函数式接口可以使用@FunctionalInterface来标注,也可以不使用,使用这个注解更方便阅读;但是如果使用这个注解去标注一个非函数式接口会报错,就像@Override一样。

参考资料:

  1. Java核心技术(第10版)
  2. Java实战(第2版)

相关文章

  • Java 8 - Lambda表达式

    Java 8 - Lambda表达式 1 Java 8-概述2 Java 8 - Lambda表达式3 Java ...

  • 【Java】4.0 Java中lambda表达式(下)

    【Java】3.0 Java中lambda表达式(上)【Java】4.0 Java中lambda表达式(下) 7....

  • java 8 lambda表达式中的异常处理

    java 8 lambda表达式中的异常处理 简介 java 8中引入了lambda表达式,lambda表达式可以...

  • java8

    1.lambda表达式《java8 Lambda表达式简介》 《java8 lambda表达式,方法的引用以及构造...

  • 《Java 8实战》学习总结

    Java 8新特性概览 Lambda表达式 流 默认方法 Lambda表达式 Lambda和函数式接口Java 8...

  • Java零基础自学DAY10 2018-03-22

    Java 8 新增的lambda表达式 Lambda 转换: Lambda表达式组成: 形参列表 箭头 ( ->)...

  • Java 8、9 语言新特性

    Java语言新特性 Java8 Java 8 新特性 Lambda 表达式 Lambda表达式(也叫做闭包)是Ja...

  • Java的Lambda表达式

    Java的Lambda表达式 1. 什么是Lambda表达式 简单的说,Lambda表达式就是匿名方法。Lambd...

  • Lambda表达式

    Lambda表达式与函数式接口紧密相关,函数式接口介绍 Lambda表达式的基本语法 Java Lambda表达式...

  • 7 Lambda表达式

    Lambda表达式是Java8的重要更新,Lambda表达式支持将代码块作为方法参数,Lambda表达式允...

网友评论

      本文标题:Java lambda表达式

      本文链接:https://www.haomeiwen.com/subject/nholyktx.html