Java 8 - Standardmethoden
Java 8 führt ein neues Konzept der Implementierung von Standardmethoden in Schnittstellen ein. Diese Funktion wurde aus Gründen der Abwärtskompatibilität hinzugefügt, sodass alte Schnittstellen verwendet werden können, um die Lambda-Ausdrucksfunktion von Java 8 zu nutzen.
„List“- oder „Collection“-Schnittstellen haben beispielsweise keine „forEach“-Methodendeklaration. Daher wird das Hinzufügen einer solchen Methode einfach die Implementierungen des Sammlungsframeworks unterbrechen. Java 8 führt die Standardmethode ein, sodass die List/Collection-Schnittstelle eine Standardimplementierung der forEach-Methode haben kann und die Klasse, die diese Schnittstellen implementiert, nicht dieselbe implementieren muss.
Syntax
public interface vehicle { default void print() { System.out.println("I am a vehicle!"); } }
Mehrere Standardeinstellungen
Bei Standardfunktionen in Schnittstellen besteht die Möglichkeit, dass eine Klasse zwei Schnittstellen mit denselben Standardmethoden implementiert. Der folgende Code erklärt, wie diese Mehrdeutigkeit aufgelöst werden kann.
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!"); } }
Die erste Lösung besteht darin, eine eigene Methode zu erstellen, die die Standardimplementierung überschreibt.
public class car implements vehicle, fourWheeler { public void print() { System.out.println("I am a four wheeler car vehicle!"); } }
Die zweite Lösung besteht darin, die Standardmethode der angegebenen Schnittstelle mit super.
aufzurufenpublic class car implements vehicle, fourWheeler { public void print() { vehicle.super.print(); } }
Statische Standardmethoden
Eine Schnittstelle kann ab Java 8 auch statische Hilfsmethoden haben.
public interface vehicle { default void print() { System.out.println("I am a vehicle!"); } static void blowHorn() { System.out.println("Blowing horn!!!"); } }
Beispiel für Standardmethode
Erstellen Sie das folgende Java-Programm mit einem beliebigen Editor Ihrer Wahl in beispielsweise C:\> JAVA.
Java8Tester.java
Live-Demopublic 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!"); } }
Überprüfen Sie das Ergebnis
Kompilieren Sie die Klasse mit javac Compiler wie folgt -
C:\JAVA>javac Java8Tester.java
Führen Sie nun den Java8Tester wie folgt aus -
C:\JAVA>java Java8Tester
Es sollte die folgende Ausgabe erzeugen -
I am a vehicle! I am a four wheeler! Blowing horn!!! I am a car!
Java