Eine Anleitung zu inneren Schnittstellen in Java

1. Einleitung

In diesem kurzen Tutorial werden wir uns die inneren Schnittstellen in Java ansehen. Sie werden hauptsächlich verwendet für:

  • Lösen des Namespace-Problems, wenn die Schnittstelle einen gemeinsamen Namen hat
  • zunehmende Einkapselung
  • Verbesserung der Lesbarkeit durch Gruppierung verwandter Schnittstellen an einem Ort

Ein bekanntes Beispiel ist die Eingabeschnittstelle , die innerhalb der Kartenschnittstelle deklariert ist . Definierte diese Weise ist die Schnittstelle nicht in globalem Bereich, und es wird Bezug genommen als Map.Entry es von anderem differenzierenden Eintrag Schnittstellen und machen ihre Beziehung zur Karte offensichtlich.

2. Innere Schnittstellen

Per Definition erfolgt die Deklaration einer inneren Schnittstelle im Hauptteil einer anderen Schnittstelle oder Klasse.

Sie sind implizit öffentlich und statisch sowie ihre Felder, wenn sie in einer anderen Schnittstelle deklariert werden (ähnlich wie Felddeklarationen in Schnittstellen der obersten Ebene), und können überall implementiert werden:

public interface Customer { // ... interface List { // ... } }

Innerhalb einer anderen Klasse deklarierte innere Schnittstellen sind ebenfalls statisch , können jedoch Zugriffsspezifizierer haben, die einschränken können, wo sie implementiert werden können:

public class Customer { public interface List { void add(Customer customer); String getCustomerNames(); } // ... }

Im obigen Beispiel haben wir eine Listenschnittstelle , die dazu dient, einige Vorgänge für die Liste der Kunden zu deklarieren, z. B. das Hinzufügen neuer Vorgänge , das Abrufen einer Zeichenfolgendarstellung usw.

Liste ist ein vorherrschender Name, und um mit anderen Bibliotheken zu arbeiten, die diese Schnittstelle definieren, müssen wir unsere Deklaration trennen, dh den Namespace .

Hier verwenden wir eine innere Schnittstelle, wenn wir keinen neuen Namen wie CustomerList verwenden möchten .

Wir haben auch zwei verwandte Schnittstellen zusammengehalten, was die Kapselung verbessert.

Schließlich können wir mit einer Implementierung fortfahren:

public class CommaSeparatedCustomers implements Customer.List { // ... }

3. Fazit

Wir haben uns kurz die inneren Schnittstellen in Java angesehen.

Codebeispiele finden Sie wie immer auf GitHub.