Java : plusieurs déclarations de classe dans un seul fichier
Bien qu'il soit possible de définir plusieurs classes de niveau supérieur dans un seul fichier Java, en respectant certaines conventions sont essentielles. L'une de ces conventions est qu'une seule classe peut être déclarée comme publique, comme spécifié par la spécification du langage Java (JLS).
Terminologies
Il n'y a pas de terme spécifique pour décrire cette technique de définition de plusieurs classes dans un seul fichier. Contrairement aux classes internes, imbriquées ou anonymes, ces classes de niveau supérieur ont une portée et une relation différentes avec le fichier qui les contient.
Restriction d'unité de compilation
Le JLS déclare que le système peut imposer la restriction selon laquelle ces classes secondaires non publiques ne peuvent pas être « référencées par code dans d'autres unités de compilation du package ». Cela signifie qu'ils ne peuvent pas être traités comme des packages privés.
Implémentation
En pratique, les compilateurs Java comme javac n'appliquent pas strictement cette restriction. Cependant, ils ont une limitation qui rend hautement indésirable la référence à une classe de niveau supérieur à partir d'un autre fichier, à moins qu'elle ne partage le même nom que le fichier dans lequel elle réside.
Par exemple, considérons deux Java fichiers :
public class Foo { // ... }
public class Bar { // ... Baz baz; // Compilation error if compiled separately } class Baz { // ... }
Si Foo.java fait référence à Baz mais pas à Bar, tentative de compilation Foo.java entraînera indépendamment une erreur de compilation.
Raisonnement
Cette limitation existe car javac ne peut pas déterminer automatiquement quel fichier source rechercher lorsqu'une classe est référencée à partir d'une autre déposer. Pour résoudre ce problème, le compilateur exige que toute classe de niveau supérieur référencée par une classe externe porte le même nom que le fichier contenant ou soit explicitement déclarée dans une classe du même nom (par exemple, dans l'exemple ci-dessus, si Foo .java contenait également une classe Bar).
Conséquences et bonnes pratiques
Bien qu'il soit techniquement possible d'utiliser plusieurs classes de niveau supérieur dans un seul fichier, cela est généralement considéré comme une mauvaise pratique en raison des limitations du compilateur décrites ci-dessus. Pour maintenir un processus de construction fiable, il est recommandé de respecter la convention consistant à placer une classe de niveau supérieur par fichier et à déclarer clairement sa visibilité (publique ou privée du package).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!