Ein Leitfaden für innere Schnittstellen in Java

Eine Anleitung zu inneren Schnittstellen in Java

1. Einführung

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

  • Beheben des Namespace-Problems, wenn die Schnittstelle einen gemeinsamen Namen hat

  • zunehmende Verkapselung

  • Verbesserung der Lesbarkeit durch Gruppierung der Schnittstellen an einem Ort

Ein bekanntes Beispiel ist dieEntry-Schnittstelle, die innerhalb derMap-Schnittstelle deklariert ist. Auf diese Weise definiert, befindet sich die Schnittstelle nicht im globalen Bereich und wird alsMap.Entrybezeichnet, der sie von anderenEntry-Schnittstellen unterscheidet und ihre Beziehung zuMapoffensichtlich macht.

2. Innere Schnittstellen

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

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 sie können überall implementiert werden:

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

Inner interfaces declared within another class are also static, aber sie können 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 eineList-Schnittstelle, die dazu dient, einige Operationen in der Liste derCustomerszu deklarieren, z. B. neue hinzuzufügen, eineString-Darstellung zu erhalten und so weiter.

List ist ein vorherrschender Name, und um mit anderen Bibliotheken zu arbeiten, die diese Schnittstelle definieren, müssen wir unsere Deklaration trennen, d. h.namespace.

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

Wir haben auch zwei verwandte Schnittstellen zusammengehalten, um die Kapselung zu verbessern.

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

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

3. Fazit

Wir haben uns kurz die inneren Schnittstellen in Java angesehen.

Wie immer finden sich Codebeispiele inover on GitHub.