Wie Verwenden von Standardmethoden in Java

Obwohl Schnittstellen ein unglaublich nützliches Feature von Java sind, haben sie eine inhärente Einschränkung: Wenn Sie eine Schnittstelle zu definieren und dann Klassen erstellen, die die Schnittstelle implementieren, gibt es keine einfache Möglichkeit, die Schnittstelle, indem Sie zusätzliche Methoden, um es zu ändern.

Zum Beispiel: Angenommen, Sie die folgende Schnittstelle erstellt haben:

public interface Spielbar {void play () -}

Sie dann mehrere Klassen erstellen, die diese Schnittstelle implementieren. Hier ist ein einfaches Beispiel:

Klasse Spiel implementiert Spielbar {public void play () {System.out.println ( "Viel Glück!") -}}

Das ist ein ziemlich sinnlos Spiel, von Kurs- es einfach die Nachricht druckt # 147-Viel Glück! # 148-, wenn die spielen Methode aufgerufen wird.

Nehmen wir nun an, dass Sie sich entscheiden, dass die bespielbar Schnittstelle sollte eine zusätzliche Funktionen haben - speziell, Sie wollen die Fähigkeit hinzuzufügen, um das Spiel zu beenden, indem sie den Aufruf einer Methode namens verlassen.

Sie würden versucht sein, nur die neue Methode, um die vorhandene Schnittstelle hinzuzufügen, wie folgt aus:

public interface Spielbar {void play () - Leere beenden () -}

Leider ist jedoch die dabei bricht Spiel Klasse, weil es bietet keine Umsetzung der verlassen Verfahren.

Sie könnten natürlich, ändern die Spiel Klasse durch eine Implementierung der Zugabe verlassen Verfahren. Aber was, wenn Sie haben Dutzende geschrieben, oder sogar Hunderte von Klassen, die Umsetzung bespielbar? Wie Sie sich vorstellen können, sobald eine Schnittstelle populär geworden ist, wird es fast unmöglich, zu ändern.

Um dieses Problem zu lindern, Java 1.8 stellt eine neue Art von Schnittstellenverfahren ein gerufener Standardmethode, die liefert Code, wie die Umsetzung des Verfahrens für alle Klassen verwendet werden, die die Schnittstelle implementieren, aber nicht selbst eine Implementierung für die Standardmethode zur Verfügung stellen.

So Java 8 können Sie sicher das hinzufügen verlassen Verfahren zum bespielbar Schnittstelle, indem es als Standardmethode, wie diese festgelegt wird:

Schnittstelle Spielbar {void play () - default nichtig beenden () {System.out.println ( "Es tut uns leid, Kündigen ist nicht erlaubt.") -}}

hier ist die bespielbar Schnittstelle legt fest, dass, wenn eine implementierende Klasse bietet keine Umsetzung der verlassen Verfahren, wird die Standard-Methode verwendet werden. In diesem Fall druckt die Standardmethode einfach die Nachricht # 147-Sorry, beendigt, nicht erlaubt. # 148-

Beachten Sie, dass das obige Beispiel auf Java-Versionen nicht vor 1.8 kompilieren. Wenn Sie eine Fehlermeldung erhalten, wenn Sie versuchen, eine Schnittstelle zu kompilieren, die verwendet Standard Stichwort, überprüfen Sie die Java-Version zu stellen Sie sicher, Version 1.8 oder höher laufen.

Hier ist ein vollständiges Beispiel, das die verwendet bespielbar Interface und seine Standardmethode:

public class TestLambdaCollection {public static void main (String [] args) {Spiel g = new Game () - g.play () - g.quit () -}} Schnittstelle Spielbar {void play () - default nichtig beenden () {System.out.println ( "Es tut uns leid, Kündigen ist nicht erlaubt.") -}} Klasse Spiel implementiert Spielbar {public void play () {System.out.println ( "Viel Glück!") -}}

Wenn Sie dieses Programm ausführen, wird Folgendes auf der Konsole angezeigt werden:

Viel Glück! Sorry, Aufhören ist nicht erlaubt.

Menü