主要有以下这些新特性:
lambda 表达式,经常配合函数式接口使用,可以有效减少代码量
Runnable 是一个函数式接口,下面展示了创建线程三种写法,显然最后一种最简洁:
函数式接口,前面其实已经提到过了,如果一个接口里面只有一个方法,那么这就是一个函数式接口,对于函数式接口,我们可以通过 lambda 表达式或者方法引用来进行快速的实现,而不必新建一个 class 去继承或者写一个匿名内部类
默认方法,意思是说,我们在写一个接口时可以通过 default
关键字为其中的方法提供默认的实现方案,使得实现类就算不覆写这个方法也没有关系:
在 new 一个 Thread 时需要传入一个 Runnable 接口的实现类
run
这个方法名其实也有点冗余,因为 Runnable 里面就这么一个方法,不写出来应该也没关系啊更直观的感受一下 lambda 表达式和函数式接口之间的关系:
forEach
方法,需要一个 Consumer
参数,这也是一个函数式接口,里面的 accept
方法需要一个参数并且没有返回值(不用记,在 IDEA 里点进去看就行),一个例子如下,它遍历 list 中的每个元素,加一后输出:lambda 表达式还有些小细节,比如参数列表中参数的类型其实可以省略,如果代码块里只有一条语句那么花括号也可以省略,如果参数列表里只有一个参数那么圆括号也可以省略,但其实就算不省略也足够简洁了,我觉得没必要省略
方法引用,感觉有点说不清,可以看个例子,就比如前面遍历 list,如果我就是想遍历一次 list 然后输出,可以用到方法引用:
原文:https://www.cnblogs.com/haoleir/p/15202912.html