(1)接口的默认方法:允许给接口添加一个非抽象的方法实现,只需要使用default关键字即可,这个特征又叫扩展方法。
(2)Lambda表达式
(3)函数式接口:仅仅只包含一个抽象对象的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法。只需给接口添加@FunctionalInterface注释,编译器如果发现你标注了这个注解的接口有多于一个抽象方法的时候会报错的。
(4)方法与构造函数引用:允许你使用::关键字来传递方法或者构造函数引用,以下代码展示了如何引用一个静态方法。
构造函数引用:
(5)lambda作用域:
在lambda表达式中访问外层作用域和老版本的匿名对象中的方式相似,你可以直接访问标记了final的外层局部变量,或者实例的字段以及静态变量。
(6)访问局部变量
(7)访问对象字段与静态变量
和本地变量不同的是,lambda内部对于实例的字段以及静态变量是既可读又可写的。
(8)访问接口的默认方法
(9)Date API
Clock时钟:提供了访问当前日期和时间方法。java.time.Clock
(10)Annotation注解:支持多种注解