Perché un file sorgente Java reca il nome della classe pubblica che contiene?

14

Sono un principiante che impara Java. In Java ogni file sorgente deve contenere una classe pubblica e tale file di origine dovrebbe avere lo stesso nome di quella classe pubblica. Inoltre, nessun file sorgente può contenere due classi pubbliche. Perché questa restrizione?

    
posta user 16.01.2012 - 18:30
fonte

2 risposte

19

In una delle sue newsletter degli specialisti Java, Heinz Kabutz analizza le Specifiche della lingua Oak . Scrive:

Why is each public class in a separate file? (Section 1)

This is a question that I have frequently been asked during my courses. Up to now I have not had a good answer to this question. In section 1, we read: "Although each Oak compilation unit can contain multiple classes or interfaces, at most one class or interface per compilation unit can be public".

In the sidebar it explains why: "This restriction is not yet enforced by the compiler, although it's necessary for efficient package importation"

It's pretty obvious - like most things are once you know the design reasons - the compiler would have to make an additional pass through all the compilation units (.java files) to figure out what classes were where, and that would make the compilation even slower.

link

    
risposta data 16.01.2012 - 18:53
fonte
8

Motivi per cui posso pensare

  • Consente di trovare altre classi leggermente più semplici per il compilatore all'inizio, dal momento che non deve cercare tutte le migliaia di file di classe per una classe pubblica casuale, ma può solo andare al file.
    • Probabilmente non ha più importanza, ma ha appena iniziato la convenzione iniziale che non è mai stata modificata
  • Nella compilazione, una modifica a un file ha effetto solo su quel file. Se ci sono più classi, allora tutto deve essere ricompilato
  • Best practice: avere più classi pubbliche nello stesso file rende le cose confuse. Lo scopo dei file è quello di organizzare il codice sorgente, lo scopo delle cartelle è quello di organizzare i file. Se tutte le classi di un particolare pacchetto si trovano in un singolo super-file da 100 MB, hai perso tutti i vantaggi e non hai ottenuto nessuno dei vantaggi dei file (oltre a un sacco di mal di testa durante la modifica)
risposta data 16.01.2012 - 19:06
fonte

Leggi altre domande sui tag