Java8新特性

 

  注:JDK 8中,对接口的设计做了非常重要的变更:

  1.使接口支持“默认方法”(Default Method),即可以在接口上声明和实现方法(需要声明为default),这样可以简化类的多个接口扩展的复杂度,潜在淡化JAVA有关多继承的缺陷,此外默认方法在lamda表达式使用方面非常便利。  此后,我们可能需要改变有些认知,比如“接口中不能有方法实现”等。

  默认方法可以被接口的实现者直接调用,也可以被继承它的子接口或者实现类重写,甚至实现接口的抽象类可以将default方法变更为抽象方法以便强制子类必须实现。
  接口的实现类中,无论是否重写默认方法,都可以通过类似于“接口名.super.默认方法名()”的方式访问父接口的默认方法实现。同时,如果一个类,实现了多个接口,且这些接口中有重名的默认方法,仍然可以通过上述方式访问相应接口的默认方法。由此可见,如果你在设计时发现,接口的子类具有某种共同的行为,你可以将其设计为“默认方法”,此后你则不需要设计抽象类来完成此要求,特别是此接口被多种不同的类实现时,可以避免在多个抽象类重复实现。

  2、使接口支持静态方法
     在此前,static方法需要声明在类或者抽象类中,接口是不支持的,尽管接口中可以声明public static类型的属性。在接口中支持静态方法,跟“默认方法”一样,我们则不需要在像以前那样使用单独的类或者抽象类来调用此方法,可以直接“接口名.静态方法名”进行调用了,在一定程度上简化了程序设计。

 

其他重要新特性

 一:Lambda表达式(一般格式: ( ) ->  { } )

Lambda表达式的本质是函数式接口的实例,其使用条件是接口必须为函数式接口,即接口中只有一个抽象方法!我们可以在一个接口上使用@FunctionalInterface注解,可以检查一个接口是否是函数式接口。

 

例:如常规Comparator比较器写法

 利用Lambda表达式或方法引用可以进行简化

 

 

二:方法引用与构造器引用

 

三:Stream API

 

 

 

 

(1)创建Stream方式一:通过集合

 

 

  创建Stream方式二:通过数组

 

   创建Stream方式三:通过Stream的of()

 (2)Stream中间操作 :

举例:

 

  

举例:将list所有值变为大写

(3)Stream终止操作: 注意:Stream一旦执行完终止操作就不可复用,需要重新生成。(上述举例中的foreach就是终止操作的一种)

 

例:

 

 

 四:Optional类

 

 

 

参考:https://www.bilibili.com/video/BV1Kb411W75N?

posted @ 2021-03-24 17:26  Only、  阅读(53)  评论(0)    收藏  举报