sylvester

JAVA8 十大新特性详解

空扰寡人 提交于 2021-02-03 00:12:22
转自https://blog.csdn.net/jiaotuwoaini/article/details/51554643#t0 --接口中的方法都是抽象的吗? --NO 场景:今天在翻看jdk的java.util.Comparator接口的时候发现了下面这段代码 1 interface Formula { 2 double calculate( int a); 3 default double sqrt( int a) { 4 return Math.sqrt(a); 5 } 6 } 我擦,什么情况? 现在带你领略下Java8的新特性: 一、接口的默认方法 Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下: 1 interface Formula { 2 double calculate( int a); 3 default double sqrt( int a) { 4 return Math.sqrt(a); 5 } 6 } Formula接口在拥有calculate方法之外同时还定义了sqrt方法,实现了Formula接口的子类只需要实现一个calculate方法,默认方法sqrt将在子类上可以直接使用。 1 Formula formula = new Formula() { 2 @Override

Java并没有衰落.大家对它的认识才刚刚开始 Java8全新出发

狂风中的少年 提交于 2020-08-10 15:41:19
Java并没有衰落.大家对它的认识才刚刚开始 很高兴能在此给大家分享Java8的新特性。这篇文章将一步一步带你了解Java8的所有新特性。我将通过简单的实例代码向大家展示接口中默认方法,lambda 表达式,方法引用,重复注解的使用. 看过这篇文章之后你将了解流、函数、接口、map扩展、日期中的新变化.不废话,放码过来! Default Methods for Interfaces(接口中的默认方法) Java 8准许我们在接口中增加一个通过default关键字修饰的非抽象的方法. 这个特性被我们称为扩展方法. 下面举例说明: interface Formula { double calculate(int a); default double sqrt(int a) { return Math.sqrt(a); } } 接口Formula 中除了抽象方法calculate 其中还定义了非抽象方法sqrt. 实现类里面继承了抽象方法calculate. 而默认方法可以直接调用. Formula formula = new Formula() { @Override public double calculate(int a) { return sqrt(a * 100); } }; formula.calculate(100); // 100.0 formula.sqrt(16);

JAVA8十大新特性详解

两盒软妹~` 提交于 2020-05-08 10:09:10
一、接口的默认方法 Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下: interface Formula { double calculate( int a); default double sqrt( int a) { return Math.sqrt(a); } } Formula接口在拥有calculate方法之外同时还定义了sqrt方法,实现了Formula接口的子类只需要实现一个calculate方法,默认方法sqrt将在子类上可以直接使用。 Formula formula = new Formula() { @Override public double calculate( int a) { return sqrt(a * 100 ); } }; formula.calculate( 100); // 100.0 formula.sqrt(16); // 4.0 文中的formula被实现为一个匿名类的实例,该代码非常容易理解,6行代码实现了计算 sqrt(a * 100)。在下一节中,我们将会看到实现单方法接口的更简单的做法。 译者注: 在Java中只有单继承,如果要让一个类赋予新的特性,通常是使用接口来实现,在C++中支持多继承,允许一个子类同时具有多个父类的接口与功能,在其他语言中