Java8的改进和新的特性
- 扩展方法。接口有了默认方法,当实现接口后,就可以使用默认方法。
- lambda表达式。不用使用匿名的对象,使用更简洁的方式进行编程。lambda表达式可以访问外层作用域,如果访问局部变量那么可以不声明为final(匿名对象需要生命为final),虽然没有设置为final但是在语义上等同于final,修改是不允许的。
- 函数式接口。每个lambda表达式对应一个类型,通常是接口类型。函数式接口是指仅仅包含一个抽象方法的接口。在接口上加上注解 @FunctionalInterface来指明是函数式接口(不指明也行)。
- java8允许使用::关键字来传递方法或者构造函数引用。
- 新增了许多新的接口。predicate接口:将输入参数进行处理,返回boolean结果。function接口:接受参数进行逻辑处理并且返回结果。等等。
- 新增Optional接口,用来防止NullPointerException异常的辅助类型。在java8中不推荐返回null而是返回Optional。
- stream接口:表示在一组元素可以一次执行的操作序列。分为中间操作和终止操作两种。中间操作返回的是stream本身,终止操作返回的是特定类型的结算结果。并且stream可以串行执行或者并行执行。同时在stream中可以应用filter、sort、map、match、count、reduce等等操作。
- 时间API。java8在java.time下多了一组全新的时间日期API。Clock、Timezones、LocalTime、LocalDate、LocalDateTime。
- 注解。java8开始支持多重注解。之前同一个注解需要放在类似数组的结构中,现在可以直接多个@,只需要对注解标注为@Repeatable。
参考资料:
网上资源
备注:
转载请注明出处:http://blog.csdn.net/wsyw126/article/details/78011678
作者:WSYW126