JAVA Lambda表达式

在JAVA中,“Lambda 表达式”(Lambda expression)是一个抽象方法的实现。这个抽象方法必须是在接口中声明的,而且实现类只需要实现这一个抽象方法,我们称这种接口为函数式接口。Lambda表达式就是函数式接口的实现,来完成对数据的处理。

基本函数的格式

JAVA函数通常是我们类中定义的行为,格式如下:

修饰符 返回类型 函数名(参数列表){
    语句块
    return 返回值;
}
  • 修饰符:函数的可见性,决定函数的使用范围
  • 返回类型:函数的输出信息,与return配合使用
  • 函数名:函数标识
  • 参数列表:函数的输入信息
  • 语句块:函数执行的操作

这就是函数的基本格式。
代码中函数名,返回类型是一定要有的,其他的可有可无。
所以代码中最简单的函数定义格式如下:

返回类型 函数名();

Lambda表达式格式

我们说Lambda表达式是一个匿名函数,那我们来看一下Lambda表达式的格式。

(参数列表) -> {语句块}
  • 参数列表:函数的输入信息
  • ->: Lambda表达式关键符(也可以理解成关键字)
  • 语句块:函数执行的操作

“->”是必须有的,我们来看下最简单的Lambda表达式结构:

() -> {}

Lambda表达式是一个表达式,程序中被作为一个值来使用。JAVA语言是强类型面向对象的语言,所以必须提供一种数据类型作为Lambda表达式的返回值类型、符合JAVA中函数格式的定义、符合面向对象规则,所以最终Lambda表达式要有一个映射成JAVA对象的过程。

函数式接口

函数式接口是用来完成Lambda表达式映射成JAVA对象的一种接口,确切的说把接口中仅存的一个抽象方法和Lambda表达式绑定并完成对象的实例化。

那么接口是如何与Lambda表达式建立类型关系的?

接口的抽象方法。下面举例说明。

定一个函数式接口

/**
 * @author Stephen Yue
 */
public interface Nothing {
    void doNothing();
}

我们在接口里定义了一个没有参数、返回值的抽象方法。

接口我们定义好了,需要我们定义接口的实现方式。我们选取Lambda表达式来完成这个实现。

// 指定接口中方法的实现过程并创建对象
Nothing nothing = () -> {};
nothing.doNothing();

给Nothing接口中doNothing方法指定了一个空实现的Lambda表达式。即没有参数、没有返回值、什么都不做的一个空实现。所以执行之后没有任何结果。我们改一下实现方式。

Nothing nothing = () -> {
        System.out.println("hello Lambda!");
    };
nothing.doNothing();

新的Lambda表达式实现同样符合接口中抽象方法定义的要求,不过程序执行完,会在控制台输出:hello Lambda!

总结

Lambda表达式的出现,提供了新的接口实现方式。接口中抽象方法名字是Lambda表达式的标识符,接口中参数类型对应Lambda表达式的参数类型,接口中返回类型对应Lambda表达式返回类型,Lambda表达式的语句块来完成抽象方法的逻辑实现。

Lambda表达式的优点:

  1. 简码
  2. 面向函数式编程(也可以理解面向接口编程)
  3. 闭包
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值