Java8新特性
- 可以通过 default 关键字向接口中添加非抽象方法的实现。java8之前,接口里的方法只能是抽象方法,我们需要通过接口创建对象,然后实现接口中的方法。java8之后,就可以直接在接口中通过 default 关键字添加非抽象方法,然后在接口创建的对象中直接使用,而不用自己再去实现了。
- 提供了更简洁的语法:Lambda 表达式。通过它,我们可以去掉写法中的一些大括号以及 return 关键字,让我们的代码更短而且更具有可读性。比如 ages.sort((a, b) -> b.compareTo(a)); 表示将年龄从大到小排列。
- 增加函数式接口的概念。函数式接口指的是只包含一个抽象方法,但可以有多个非抽象方法的接口,这样的接口可以转换为 lambda 表达式。比如有 Runnable 接口和 Callable 接口。
- 可以通过 :: 来获取方法或构造函数的引用。比如通过 :: new 来获取构造函数的引用。
- 支持 Stream 流操作,它分为中间操作和最终操作,最终操作返回计算结果,中间操作返回 stream 本身,这样就可以把多个操作依次串起来。常用的 stream 操作有 filter 过滤、sorted 排序、map 映射、count 计数等。
- 支持多重注解,给注解标注 @Repeatable 后就可以把这个注解使用多次。
参考