60 votes

Pourquoi seulement 1 public class dans le fichier Java

Dans n'importe quel fichier Java, pourquoi pouvons-nous avoir une seule classe publique dont le nom est le même que le fichier Java nom?

35voto

Mike Baranczak Points 4425

Elle oblige l'ensemble du code Java à être organisé d'une certaine façon, ce qui permet d'améliorer la lisibilité du code. La Java, les concepteurs ont choisi une approche stricte qui impose leur idée de bonnes pratiques de conception, et cela fait partie de ce thème. Voilà qui contraste avec le rien de va-attitude en Perl.

18voto

Timo Westkämper Points 7950

Selon cette source, il est pour l'efficacité de la compilation :

Dans la barre latérale, il explique pourquoi: "C' la restriction n'est pas encore appliquée par le compilateur, mais il est nécessaire pour package efficace à l'importation"

Il est assez évident - comme la plupart des choses une fois que vous connaissez les raisons de conception - le compilateur aurait à faire un supplémentaire de passer à travers toutes les les unités de compilation (.fichiers java) à comprendre ce que les classes étaient où, et qui ferait de la compilation encore plus lent.

La même chose s'applique aux importations de fichiers source dans les IDEs. Une autre raison serait raisonnable de la source de tailles.

9voto

spbfox Points 693

Ce sont les règles. Bien qu'il n'est pas tout à fait vrai. Vous pouvez définir des classes internes à l'intérieur de vous "principal" de la classe comme ceci:

public class A {  
   public class B {  
       ...  
   }  
}

3voto

Joel Points 11003

La courtoisie du Dr Heinz Kabutz et son excellent bulletin....

Pourquoi est-ce que chaque classe publique dans un autre fichier?

C'est une question que j'ai souvent été demandé lors de mon des cours de. Jusqu'à maintenant, je n'ai pas eu une la bonne réponse à cette question. Dans la section 1, nous lisons: "Même si chacun de Chêne unité de compilation peut contenir plusieurs des interfaces ou des classes, au plus une de la classe ou de l'interface par compilation l'unité peut être public".

Dans la barre latérale, il explique pourquoi: "C' la restriction n'est pas encore appliquée par le compilateur, mais il est nécessaire pour package efficace à l'importation"

Il est assez évident - comme la plupart des choses une fois que vous connaissez les raisons de conception - le compilateur aurait à faire un supplémentaire de passer à travers toutes les les unités de compilation (.fichiers java) à comprendre ce que les classes étaient où, et qui ferait de la compilation encore plus lent.

1voto

Aaron Points 395

Java utilise cette convention de trouver la classe/interface bytecode depuis le classpath et la numérisation de la hiérarchie des paquets dans des sous-répertoires. Système de fichiers de la représentation de cette hiérarchie applique également quelques règles de base.

  1. Deux Java des classes ou des interfaces dans le même package ne peut pas avoir le même nom. Les noms de fichier serait les conflits.
  2. Deux packages Java dans le même package parent ne pouvait pas ont le même nom. Les chemins de dossier serait en conflit.
  3. Une classe a de la visibilité à toutes les classes du même package sans modification pour le classpath.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X