Maison >Java >javaDidacticiel >Plusieurs classes Java de niveau supérieur dans un seul fichier peuvent-elles interagir avec du code externe ?

Plusieurs classes Java de niveau supérieur dans un seul fichier peuvent-elles interagir avec du code externe ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-06 04:31:10214parcourir

Can Multiple Top-Level Java Classes in One File Interact with External Code?

Déclarations de classes multiples en Java : une explication détaillée

En Java, plusieurs classes de niveau supérieur peuvent coexister au sein d'un seul fichier, avec seulement l'un d'eux étant désigné comme public. Cette technique, dépourvue de nom spécifique analogue aux classes internes, imbriquées ou anonymes, présente deux questions clés :

1. Ces classes secondaires ne peuvent-elles pas interagir avec du code en dehors de leur unité de compilation ?

La spécification du langage Java (JLS) autorise, mais n'applique pas, une restriction interdisant aux classes secondaires d'être référencées par du code dans d'autres unités de compilation. dans le même colis. Cela implique qu'ils ne peuvent pas être traités comme des packages privés.

2. Les différentes implémentations Java gèrent-elles cette restriction différemment ?

Contrairement au JLS, le compilateur Java javac applique activement une limitation qui décourage efficacement le référencement de classes de niveau supérieur à partir de fichiers externes à moins qu'elles ne partagent le même nom que le fichier dans lequel ils résident.

Explication détaillée

Cette limitation se manifeste lorsqu'un La classe du fichier A tente d'accéder à une classe du fichier B, où le fichier B contient également une autre classe portant le même nom que le fichier B. Cependant, si la classe du fichier A accède également à l'autre classe du fichier B portant le même nom, la compilation l'erreur disparaît.

Pour illustrer :

FichierA.java :

public class FileA {

    private FileB fileB;

}

FichierB.java :

public class FileB {

    private class FileBClass {

    }

}

Compilation FileA.java seul entraînera un erreur :

FileA.java:2: cannot find symbol
symbol  : class FileBClass
location: class FileA

Pour résoudre ce problème, soit FileA.java doit également faire référence à FileB.java, soit FileB.java doit être compilé au préalable.

Conclusion

Bien qu'elle ne soit pas explicitement interdite, la limitation appliquée par javac décourage la référence aux classes de niveau supérieur à partir de fichiers externes, à moins qu'elles ne partagent le même nom que le fichier dans lequel ils résident dans, rendant cette pratique peu pratique dans la plupart des cas.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn