通过简单明了的代码示例,你将会学习到如何使用默认接口方法,Lambda表达式,方法引用和可重复注解。
Java 8 允许我们使用deult关键字,为接口添加非抽象(non-abstract)的方法实现。这个特性又被称为 扩展方法 。下面是我们的第一个例子:
在接口 Formula 中,除了抽象方法 caculate 以外,还定义了一个默认方法sqrt。Formula的实现类只需要实现抽象方法caculate就可以了。默认方法sqrt可以直接使用。
formula 对象以匿名对象的形式实现了Formula接口。代码很啰嗦:用了6行代码才实现了一个简单的计算功能:a*100 方根。我们在下一节会看到,Java 8 还有一种更加漂亮的方法,能够实现只包含单个函数的对象。
让我们从最简单的例子开始,来学习如何对一个string列表进行排序。我们首先使用Java 8之前的方法来实现:
静态工具方法 Collections.sort 接受一个 list,和一个 Comparator 接口作为输入参数来对,Comparator的实现类可以对输入的list中的元素进行比较。通常你会创建一个匿名Comparator对象,并把它作为参数传递给sort方法。
除了一直以来创建匿名对象的方式外,Java 8 还提供了一种更简洁的语法,Lambda表达式。
只要一行代码,包含了方法体。你甚至可以连大括号对{}和return关键字都省略不要。不过这还不是最短的写法:
List现在有了一个 sort方法。Java编译器能够自动识别参数的类型,所以你就可以省略掉类型不写。让我们再深入地研究一下lambda表达式的威力吧。
Java 8 允许你通过::关键字获取方法或者构造函数的的引用。的例子就演示了如何引用一个静态方法。而且,我们还可以对一个对象的方法进行引用:
推荐:
网友评论 ()条 查看