JDK8新增语法特性简介
JDK8新增语法特性:
* Lambda表达式
* 函数接口(Functional Interface)
* 方法引用(Method Reference)
* default方法(defender方法)
* 批量数据操作(bulk dataoperations)
① Lambda表达式
Java中的Lambda表达式是基于单方法接口(Single Abstract Method).单方法接口顾名思义就是接口中只有一个方法.
举个栗子:
Runnable接口中,只有一个run()方法.这个Runnalbe接口即为单方法接口.
Lambda表达式是一种匿名方法.可以将单方法接口(Single Abstract Method)中的函数作为方法参数处理, 使代码更加简洁.
在Java中Lambda表达式返回值是一个对象, 这个对象必须是单方法接口(Single Abstract Method)对象.
② 函数接口(Functional Interface)
只包含一个抽象方法的接口,所以也称为SAM(Single Abstract Method)类型的接口.例如我们比较熟悉的Runnable接口,只定义了唯一的一个抽象方法run(),就是函数接口.Java8中新增了许多函数接口,如果想进一步了解新增了哪些函数接口,以及为什么要新增如此众多的函数接口,可以从文章中找到答案.
③ 方法引用(Method Reference)
Lambda表达式的一种特殊形式.当一个lambda表达式body中仅仅是调用某个方法,这种情况下,使用方法引用替代lambda表达式,从形式上直接引用这个方法,这就比在lambda表达式body中引用在形式上更简洁一些.
④ default方法
Default方法可以认为是Lambda表达式和JDK类库之间的桥梁.引入Default方法的主要目的是为了升级标准JDK接口,另外也是为了我们最终能在Java8中顺畅使用Lambda表达式.
⑤ 批量数据操作(bulk dataoperations)
引入批量数据操作的目的是应用lambda函数来实现包含并行操作在内的多种数据处理功能,而支持并行数据操作是其关键内容.这个并行操作是在Java7 java.util.concurrency的Fork/Join机制上实现的.
⑥ 总结
Lambda表达式极大地提升的代码可读性并使Java语言更加具有表现力,尤其当我们使用新增的数据流API时.相应地,default
方法对API升级至关重要,它用来把Lambda表达式集成到集合API中,为我们使用提供便利.
所有新特性的终极目标却是引入并行类库和无缝地利用多核硬件的优势.这些新的变化,将使我们能够以更加高效的方式充分利用Java语言.