美文网首页java
Java 8 - 默认方法

Java 8 - 默认方法

作者: 全能程序猿 | 来源:发表于2017-07-19 20:36 被阅读7次

Java 8 - 默认方法


1 Java 8-概述
2 Java 8 - Lambda表达式
3 Java 8 - 方法引用
4 Java8-Functional Interfaces函数式接口
5 Java 8 - 默认方法
6 Java 8 - Streams
7 Java 8 - Optional Class可选类
8 Java 8 - Nashorn JavaScript
9 Java 8 - New Date/Time API

Java 8在接口中引入了默认方法实现的新概念。添加此功能以实现向后兼容,从而可以使用旧接口来利用Java 8的lambda表达能力。例如,“List”或“Collection”接口没有“forEach”方法声明。因此,添加这种方法将简单地打破收集框架的实现。Java 8引入了默认方法,使List / Collection接口可以具有forEach方法的默认实现,实现这些接口的类不需要实现。

原文链接:http://blogxinxiucan.sh1.newtouch.com/2017/07/19/Java-8-默认方法/

句法

public interface vehicle {
   default void print(){
      System.out.println("I am a vehicle!");
   }
}

多个默认值

使用接口中的默认功能,类可能使用相同的默认方法实现两个接口。以下代码解释了如何解决这种歧义。

public interface vehicle {
   default void print(){
      System.out.println("I am a vehicle!");
   }
}

public interface fourWheeler {
   default void print(){
      System.out.println("I am a four wheeler!");
   }
}

第一个解决方案是创建一个覆盖默认实现的自己的方法。

public class car implements vehicle, fourWheeler {
   default void print(){
      System.out.println("I am a four wheeler car vehicle!");
   }
}

第二个解决方案是使用super调用指定接口的默认方法。

public class car implements vehicle, fourWheeler {
   default void print(){
      vehicle.super.print();
   }
}

静态默认方法

接口也可以具有来自Java 8的静态帮助程序。

public interface vehicle {
   default void print(){
      System.out.println("I am a vehicle!");
   }
    
   static void blowHorn(){
      System.out.println("Blowing horn!!!");
   }
}

默认方法示例

让我们看一个例子来更清楚地说明默认方法。请在代码编辑器中编写以下程序,了解并验证结果。

Java8Tester.java

public class Java8Tester {
   public static void main(String args[]){
      Vehicle vehicle = new Car();
      vehicle.print();
   }
}

interface Vehicle {
   default void print(){
      System.out.println("I am a vehicle!");
   }
    
   static void blowHorn(){
      System.out.println("Blowing horn!!!");
   }
}

interface FourWheeler {
   default void print(){
      System.out.println("I am a four wheeler!");
   }
}

class Car implements Vehicle, FourWheeler {
   public void print(){
      Vehicle.super.print();
      FourWheeler.super.print();
      Vehicle.blowHorn();
      System.out.println("I am a car!");
   }
}

验证结果
使用javac编译器编译类,如下所示:

$javac Java8Tester.java

现在运行Java8Tester如下 -

$java Java8Tester

它应该产生以下输出 -

I am a vehicle!
I am a four wheeler!
Blowing horn!!!
I am a car!

相关文章

  • Java 8 - 默认方法

    Java 8 - 默认方法 1 Java 8-概述2 Java 8 - Lambda表达式3 Java 8 - 方...

  • java8接口中的默认方法

    java8接口中的默认方法 概述默认方法 java8中可以在接口中定义一个default修饰的方法,例如: 这样任...

  • Java 8 特性

    java-8-tutorial 接口的默认方法和静态方法 默认方法用default修饰,默认方法和抽象方法之间的区...

  • 默认方法

    默认方法 声明:java8新特性系列为个人学习笔记,参考地址点击这里,侵删!! Java 8 新增了接口的默认方法...

  • (转)Java8 lambda使用总结-结合实例介绍

    原文:深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法) 原文:Java8...

  • java8 新特性总结

    java8新特性 1.接口方法默认实现:java8中接口方法可以有默认实现,需要加入default关键字。 2.L...

  • Java 8 | 默认方法

    在前面的文章中,我们学习了 Lambda 表达式和函数式接口。接下来我们继续讨论与之相关的特性 --- 默认方法。...

  • Java8学习笔记目录

    Java8学习笔记 -- 接口的默认方法与静态方法 Java8学习笔记 -- Lambda表达式,Function...

  • 八 接口中的默认方法与静态方法

    一、接口中的默认方法 Java 8中允许接口中包含具有具体实现的方法,该方法称为“默认方法”,默认方法使用 def...

  • Java8_教程_01

    JAVA8 教程 默认方法 使用:只需要实现抽象方法,默认方法可以被直接调用 Lambda expressions...

网友评论

    本文标题:Java 8 - 默认方法

    本文链接:https://www.haomeiwen.com/subject/xorrkxtx.html