Guide sur les interfaces internes en Java

Guide des interfaces internes en Java

1. introduction

Dans ce court didacticiel, nous examinerons les interfaces internes en Java. Ils sont principalement utilisés pour:

  • résolution du problème de nommage lorsque l'interface a un nom commun

  • encapsulation croissante

  • amélioration de la lisibilité en regroupant les interfaces associées en un seul endroit

Un exemple bien connu est l'interfaceEntry qui est déclarée à l'intérieur de l'interfaceMap. Définie de cette façon, l’interface n’est pas dans la portée globale, et elle est référencée commeMap.Entry, ce qui la différencie des autres interfacesEntry et rend sa relation avecMap évidente.

2. Interfaces intérieures

Par définition, la déclaration d'une interface interne se produit dans le corps d'une autre interface ou classe.

Ils sont implicitement publics et statiques, ainsi que leurs champs lorsqu'ils sont déclarés dans une autre interface (comme les déclarations de champ dans les interfaces de niveau supérieur), et ils peuvent être implémentés n'importe où:

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

Inner interfaces declared within another class are also static, mais ils peuvent avoir des spécificateurs d'accès qui peuvent contraindre où ils peuvent être implémentés:

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

Dans l'exemple ci-dessus, nous avons une interfaceList qui servira à déclarer certaines opérations sur la liste deCustomers telles que l'ajout de nouvelles, l'obtention d'une représentationString et ainsi de suite.

List est un nom courant, et pour travailler avec d'autres bibliothèques définissant cette interface, nous devons séparer notre déclaration, c'est-à-direnamespace it.

C'est là que nous utilisons une interface interne si nous ne voulons pas utiliser un nouveau nom commeCustomerList.

Nous avons également conservé deux interfaces liées ensemble, ce qui améliore l'encapsulation.

Enfin, nous pouvons continuer avec une implémentation:

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

3. Conclusion

Nous avons examiné rapidement les interfaces internes en Java.

Comme toujours, des échantillons de code peuvent être trouvésover on GitHub.