Je pense que les autoriser est une condition préalable à l'existence de classes imbriquées. Les classes anonymes, en particulier, réduisent considérablement le nombre de fichiers .java requis. Sans ce support, vous auriez besoin de nombreuses implémentations d'interfaces à méthode unique dans leurs propres fichiers séparés de la classe principale dans laquelle elles sont utilisées. (Je pense en particulier aux auditeurs d'action).
Il existe une bonne explication de toutes les classes imbriquées dans le document Classes imbriquées Tutoriel Java sur le site web d'Oracle, qui contient des exemples de chacun d'entre eux. Il explique également pourquoi ils sont utiles, ce que je vais citer :
Pourquoi utiliser des classes imbriquées ?
Les raisons qui justifient l'utilisation de classes imbriquées sont notamment les suivantes :
-
Il s'agit d'un moyen de regrouper logiquement les classes qui ne sont utilisées qu'à un seul endroit. : Si une classe n'est utile qu'à une seule autre classe, il est logique de l'intégrer à cette dernière et de les garder ensemble. L'imbrication de ces "classes d'aide" permet de rationaliser leur package.
-
Il augmente l'encapsulation : Considérons deux classes de premier niveau, A et B, où B a besoin d'accéder à des membres de A qui, autrement, seraient déclarés privés. En cachant la classe B dans la classe A, les membres de A peuvent être A peuvent être déclarés privés et B peut y accéder. En outre, B lui-même peut être cachée du monde extérieur.
-
Elle peut conduire à un code plus lisible et plus facile à maintenir. : L'imbrication de petites classes dans des classes de niveau supérieur permet de rapprocher le code de l'endroit où il est utilisé. utilisé.
(souligné par moi)
Je ne connais pas bien la spécification Java des premiers jours, mais une recherche rapide montre que les classes internes ont été ajoutées dans Java 1.1.