Un guide sur les 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 d'espacement des noms 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' interface Entry qui est déclarée à l'intérieur de l' interface Map . Définie de cette façon, l'interface n'est pas dans une portée globale et elle est référencée sous le nom de Map.Entry en la différenciant des autres interfaces Entry et en rendant sa relation à Map évidente.

2. Interfaces internes

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 (similaire aux déclarations de champs dans les interfaces de niveau supérieur), et ils peuvent être implémentés n'importe où:

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

Les interfaces internes déclarées dans une autre classe sont également statiques , mais elles 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 interface de liste qui servira à déclarer certaines opérations sur la liste de clients telles que l'ajout de nouveaux clients , l'obtention d'une représentation String , etc.

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-à-dire l' espace de noms it.

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

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

Enfin, nous pouvons continuer avec une implémentation de celui-ci:

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

3. Conclusion

Nous avons examiné rapidement les interfaces internes en Java.

Comme toujours, des exemples de code peuvent être trouvés sur GitHub.