Qu'est-ce qu'une classe intérieure anonyme?
Dans la programmation informatique orientée objet, une classe interne anonyme est une classe déclarée à l'intérieur d'une méthode mais non nommée. Une classe interne anonyme a plusieurs restrictions qui la distinguent d'une classe normale, y compris une restriction de la portée des variables auxquelles elle peut accéder. Il existe des situations très spécifiques dans lesquelles l'utilisation d'une classe interne anonyme peut améliorer la lisibilité du code source, mais elle est principalement utilisée pour aider à appliquer une encapsulation dans laquelle la génération de classes séparées pourrait la compliquer.
L'encapsulation est le concept de la programmation orientée objet (OOP) selon lequel un objet et ses composants doivent être protégés d'une manière ou d'une autre et liés à l'objet. Les classes internes anonymes, et les classes internes en général, aident à réaliser une encapsulation pour des objets particulièrement complexes. Au lieu de devoir créer une classe qui repose sur une classe externe distincte, en les liant artificiellement et en exposant potentiellement certains composants, une classe interne anonyme peut lier les deux ensemble.
Dans certains langages de programmation, une classe interne anonyme peut aider à surmonter les restrictions liées à l'héritage unique. Si un objet hérite d'une classe mais doit ensuite en accéder une autre, une classe interne peut être générée à la volée puis transmise aux gestionnaires appropriés. Cette technique est commune aux callbacks et aux écouteurs d'événement. La seule alternative serait de créer une seconde classe entière dans laquelle seules une ou deux méthodes sont remplacées.
Les classes internes anonymes ont des restrictions en place pour empêcher la rupture de l'encapsulation et pour appliquer la portée. La principale restriction est qu'une classe interne anonyme ne peut pas accéder aux variables de la méthode dans laquelle elle réside sauf si ces variables sont déclarées en tant que final. En effet, la classe intérieure pourrait continuer à fonctionner au-delà de la vie de la classe et de la méthode dans laquelle elle niche. Les variables de la classe d'emballage seraient détruites une fois sa vie terminée, les références détenues par la classe interne deviendraient instantanément invalides. La seule exception à cette règle est une variable finale, car elle existera au-delà de l'instance.
L'une des utilisations les plus spécifiques d'une classe interne anonyme est la protection de code. De nombreux langages POO fournissent un mécanisme appelé réflexion. Reflection permet à un programme de disséquer une autre classe et de voir quelles sont ses variables membres et ses méthodes, mais pas le code lui-même. En utilisant une classe interne anonyme, le contenu de la classe interne est protégé contre la réflexion et le fonctionnement interne de la classe supérieure peut être efficacement masqué.