JAVA8新特性的一些理解
什么是闭包
闭包就是能够读取其他函数内部变量的函数。
所以闭包可以理解成"定义在一个函数内部的函数"。
在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
什么是函数式接口
只有一个抽象方法的接口,就是函数式接口
什么是Lambda表达式
是一个闭包,赋予JAVA语言一个能力:将方法作为作为参数传递给另外一个方法。
Lamda表达式是函数式接口的快捷实现方式。传统的复杂的实现方式如:匿名内部类。
什么是方法引用
是Lambda的另外一种表现形式或者叫更简单的写法。
适用于这种场景:某些情况下,我们用Lambda表达式仅仅是调用一些已经存在的方法,除了调用动作外,没有其他任何多余的动作。这时候使用方法引用更简洁。
方法引用可以用等价的Lambda表达式实现。如:
语法 | 对应的Lambda表达式 | |
---|---|---|
静态方法引用 | 类名::staticMethod | (args) -> 类名.staticMethod(args) |
实例方法引用 | inst::instMethod | (args) -> inst.instMethod(args) |
对象方法引用 | 类名::instMethod | (inst,args) -> 类名.instMethod(args) |
构建方法引用 | 类名::new | (args) -> new 类名(args) |