1、Optional
2、lanmda
条件:
1.方法的参数或局部变量类型必须为接口!!!,才能使用Lambda
2.接口中有且仅有一个抽象方法
针对一个接口中,是否有大于一个抽象方法?JDK8为我们新增了一个注解:@FunctionalInterface。它能够帮助我们检测这个接口是不是只有一个抽象方法,如果有两个抽象方法,则会报错。
3、接口和抽象类、抽象防范
接口:用 interface修饰,只能定义抽象方法和①静态常量 ,子类可以同时实现多个接口。并且实现全部的抽象方法。
jdk1.8后增强 ①静态常量 ②抽象方法 ③默认方法 ④静态方法
抽象类: abstract 定义的类,里面可以存在抽象方法 也可以定义非抽象方法,可以不能被实例化 子类继承抽象类后必须实现所有的抽象方法。子类可以直接调用抽象类中的非抽象方法
抽象方法:没有实现的方法称为抽象方法,用abstract 修饰 抽象方法只能定义在接口或者抽象类中。
4、接口增强
jdk1.8后增强 ①静态常量 ②抽象方法 ③默认方法 ④静态方法
5、Stream
JDK8之前,(示例中一次for循环除外)当我们面对一个集合多次 for循环的问题,则需要多次遍历集合来完成操作。针对这个问题,JDK8中引入了 Stream 流式操作,便能够解决多次 for 循环的弊端。
Collectors.toList()用来结束Stream流。