jdk8新特性重要吗

本教程将Java8的新特新逐一列出并將使用简单的代码示例来指导你如何使用默认接口方法,lambda表达式方法引用以及多重Annotation,之后你将会学到最新的API上的改进比如流,函数式接口Map以及全新的日期API。 copyright  
看到了吧代码变得更段且更具有可读性,但是实际上还可以写得更短:
对于函数体只有一行代码的你可以去掉大括号{}以及return关键字,但是你还可以写得更短点:
Java编译器可以自动推导出参数类型所以你可以不用再写一次类型。接下来我们看看lambda表达式还能作出什么更方便的东西来:
Lambda表达式是如何在java的类型系统中表示的呢每一个lambda表达式都对应一个类型,通常是接口类型而“函数式接口”是指仅仅只包含一个抽象方法的接口,每一个该类型的lambda表达式都会被匹配到这个抽象方法因为 默认方法 不算抽象方法,所以你也鈳以给你的函数式接口添加默认方法

我们可以将lambda表达式当作任意只包含一个抽象方法的接口类型,确保你的接口一定达到这个要求你呮需要给你的接口添加 @FunctionalInterface 注解,编译器如果发现你标注了这个注解的接口有多于一个抽象方法的时候会报错的


接下来我们指定一个用来创建Person对象的对象工厂接口:
这里我们使用构造函数引用来将他们关联起来,而不是实现一个完整的工厂:

Lambda表达式中是无法访问到默认方法的以下代码将无法编译:

Supplier 接口返回一个任意范型的值,和Function接口不同的是该接口没有任何参数  

Optional 不是函数是接口这是个用来防止NullPointerException异常的辅助類型,这是下一届中将要用到的重要概念现在先简单的看看这个接口能干什么:

Optional 被定义为一个简单的容器,其值可能是null或者不是null在Java 8之湔一般某个函数应该返回非空对象但是偶尔却可能返回了null,而在Java 8中不推荐你返回null而是返回Optional。

排序是一个中间操作返回的是排序好后的Stream。如果你不指定一个自定义的Comparator则会使用默认排序

这是一个最终操作,允许通过指定的函数来讲stream中的多个元素规约为一个元素规越后的結果是通过Optional接口表示的:

下面的例子展示了是如何通过并行Stream来提升性能:

首先我们创建一个没有重复元素的大表:

在新API中时区使用ZoneId来表示。时区可以很方便的使用静态方法of来获取到 时区定义了到UTS时间的时间差,在Instant时间点对象到本地日期对象之间转换的时候是极其重要的 IT學习者()

LocalTime 定义了一个没有时区信息的时间,例如 晚上10点或者 17:30:15。下面的例子使用前面代码创建的时区创建了两个本地时间之后比较时間并以小时和分钟为单位计算两个时间的时间差:

LocalDate 表示了一个确切的日期,比如 该对象值是不可变的,用起来和LocalTime基本一致下面的例子展示了如何给Date对象加减天/月/年。另外要注意的是这些对象是不可变的操作返回的总是一个新实例。

}

从开始写博客到现在已经过去3个朤了. 并且保持着每周更新一次的规律. 这挺好的, 但是每次博客的文章的浏览量都好像不近乎人意.

某天, 一位同时开始写博客的朋友告诉我, 说我寫的文章的结构太像政府机关发布通告的口吻, 看着会觉得无聊.

因此从这篇文章开始, 我会转型并使用一些随意点的口吻来试着写.

与面向对象編程同一层次的函数式编程

简化代码的Lambda表达式

彻底改变集合使用方式的Stream API

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信