Een gids voor interne interfaces in Java

1. Inleiding

In deze korte tutorial kijken we naar interne interfaces in Java. Ze worden voornamelijk gebruikt voor:

  • het probleem met de naamruimte oplossen wanneer de interface een algemene naam heeft
  • toenemende inkapseling
  • leesbaarheid vergroten door gerelateerde interfaces op één plek te groeperen

Een bekend voorbeeld is de Binnenkomst interface die wordt gedeclareerd in de Kaart koppel. Op deze manier gedefinieerd, heeft de interface geen globaal bereik en wordt ernaar verwezen als Kaart het onderscheiden van andere Binnenkomst interfaces en het maken van zijn relatie met Kaart voor de hand liggend.

2. Innerlijke interfaces

Per definitie vindt declaratie van een interne interface plaats in de body van een andere interface of klasse.

Ze zijn impliciet openbaar en statisch, evenals hun velden wanneer ze worden gedeclareerd in een andere interface (vergelijkbaar met veldverklaringen in interfaces op het hoogste niveau), en ze kunnen overal worden geïmplementeerd:

openbare interface Klant {// ... interfacelijst {// ...}}

Binneninterfaces die binnen een andere klasse zijn gedeclareerd, zijn ook statisch, maar ze kunnen toegangsspecificaties hebben die kunnen bepalen waar ze kunnen worden geïmplementeerd:

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

In het bovenstaande voorbeeld hebben we een Lijst interface die zal dienen als het declareren van enkele bewerkingen in de lijst met Klanten zoals het toevoegen van nieuwe, het verkrijgen van een Draad vertegenwoordiging enzovoort.

Lijst is een veel voorkomende naam, en om met andere bibliotheken te werken die deze interface definiëren, moeten we onze verklaring scheiden, d.w.z. naamruimte het.

Dit is waar we gebruik maken van een innerlijke interface als we niet met een nieuwe naam willen gaan, zoals Klantenlijst.

We hebben ook twee gerelateerde interfaces bij elkaar gehouden, wat de inkapseling verbetert.

Eindelijk kunnen we doorgaan met een implementatie ervan:

openbare klasse CommaSeparatedCustomers implementeert Customer.List {// ...}

3. Conclusie

We hebben snel de interne interfaces in Java bekeken.

Zoals altijd zijn codevoorbeelden te vinden op GitHub.


$config[zx-auto] not found$config[zx-overlay] not found