Java 8 Default-Methoden
Java 8 führte Default-Methoden für Schnittstellen ein.
Einfach ausgedrückt bedeuten Default-Methoden, dass Schnittstellen implementierte Methoden haben können und implementierende Klassen sie nicht implementieren müssen.
Wir müssen nur das Schlüsselwort default vor dem Methodennamen hinzufügen, um eine Default-Methode zu implementieren.
Warum gibt es dieses Feature?
Zunächst war die bisherige Schnittstelle ein zweischneidiges Schwert. Der Vorteil ist, dass sie auf Abstraktion statt auf konkrete Programmierung ausgerichtet ist. Der Nachteil ist, dass, wenn die Schnittstelle geändert werden muss, alle Klassen, die diese Schnittstelle implementieren, geändert werden müssen. Das aktuelle Collection-Framework vor Java 8 hatte keine foreach-Methode. Die übliche Lösung, die man sich vorstellen kann, besteht darin, neue Methoden und Implementierungen zu den relevanten Schnittstellen im JDK hinzuzufügen. Für bereits veröffentlichte Versionen gibt es jedoch keine Möglichkeit, neue Methoden zu einer Schnittstelle hinzuzufügen, ohne bestehende Implementierungen zu beeinflussen. Daher wurden Default-Methoden eingeführt. Ihr Zweck ist es, die Inkompatibilität zwischen Schnittstellenänderungen und bestehenden Implementierungen zu lösen.
Syntax
Das Syntaxformat einer Default-Methode ist wie folgt:
Mehrere Default-Methoden
Wenn eine Schnittstelle eine Default-Methode hat, betrachten Sie die Situation, in der eine Klasse mehrere Schnittstellen implementiert und diese Schnittstellen dieselbe Default-Methode haben. Das folgende Beispiel veranschaulicht die Lösung für diese Situation:
Die erste Lösung besteht darin, eine eigene Default-Methode zu erstellen, um die Default-Methode der Schnittstelle zu überschreiben:
Die zweite Lösung besteht darin, super zu verwenden, um die Default-Methode der angegebenen Schnittstelle aufzurufen:
Statische Default-Methoden
Ein weiteres Merkmal von Java 8 ist, dass Schnittstellen statische Methoden deklarieren (und Implementierungen dafür bereitstellen) können. Zum Beispiel:
Beispiel für Default-Methode
Wir können die Verwendung von Default-Methoden anhand des folgenden Codes verstehen. Sie können den Code in die Datei Java8Tester.java einfügen:
Java8Tester.java-Datei
Wenn das obige Skript ausgeführt wird, ist das Ausgabeergebnis:
$ javac Java8Tester.java $ java Java8Tester 我是一辆车! 我是一辆四轮车! 按喇叭!!! 我是一辆汽车!
Andere Erweiterungen
Neue Funktionen in Java 8