Java 8 新特性
Default Methods for Interfaces(接口的默认方法)
Java 8 使我们能够通过使用 default 关键字向接口添加非抽象方法实现。 此功能也称为虚拟扩展方法。
第一个例子:
复制代码
Formula 接口中除了抽象方法计算接口公式还定义了默认方法 sqrt。 实现该接口的类只需要实现抽象方法calculate
。 默认方法 sqrt 可以直接使用。当然你也可以直接通过接口创建对象,然后实现接口中的默认方法就可以了,我们通过代码演示一下这种方式。
复制代码
formula 是作为匿名对象实现的。该代码非常容易理解,6 行代码实现了计算sqrt(a*100)
。在下一节中,我们将会看到在 Java 8 中实现单个方法对象有一种更好更方便的方法。
Lambda expressions(Lambda 表达式)
首先看看在老版本的 Java 中是如何排列字符串的:
复制代码
只需要给静态方法 Collections.sort
传入一个 List 对象以及一个比较器来按指定顺序排列。通常做法都是创建一个匿名的比较器对象然后将其传递给 sort
方法。
在 Java 8 中你就没必要使用这种传统的匿名对象的方式了,Java 8 提供了更简洁的语法,lambda 表达式:
复制代码
可以看出,代码变得更段且更具有可读性,但是实际上还可以写得更短:
复制代码
对于函数体只有一行代码的,你可以去掉大括号{}以及 return 关键字,但是你还可以写得更短点:
复制代码
List 类本身就有一个sort
方法。并且 Java 编译器可以自动推导出参数类型,所以你可以不用再写一次类型。接下来我们看看 lambda 表达式还有什么其他用法。
版权声明: 本文为 InfoQ 作者【Bf-Bus】的原创文章。
原文链接:【http://xie.infoq.cn/article/c5e6452aec5b94e6e2a8b0681】。文章转载请联系作者。
评论