¿Por qué un archivo de origen Java lleva el nombre de la clase pública que contiene?

14

Soy un novato que aprende Java. En Java, cada archivo de origen debe contener una clase pública y ese archivo de origen debe tener el mismo nombre que esa clase pública. Además, ningún archivo fuente puede contener dos clases públicas. ¿Por qué esta restricción?

    
pregunta user 16.01.2012 - 18:30

2 respuestas

19

En uno de sus boletines de especialistas en Java, Heinz Kabutz explora las Especificaciones de Oak Language . El escribe:

  

¿Por qué cada clase pública está en un archivo separado? (Sección 1)

     

Esta es una pregunta que me han preguntado con frecuencia durante mi   cursos Hasta ahora no he tenido una buena respuesta a esta pregunta. En   sección 1, leemos: "Aunque cada unidad de compilación de Oak puede contener   múltiples clases o interfaces, como máximo una clase o interfaz por   La unidad de compilación puede ser pública ".

     

En la barra lateral se explica por qué: "Esta restricción aún no se ha aplicado   Por el compilador, aunque es necesario para un paquete eficiente.   importación "

     

Es bastante obvio, como la mayoría de las cosas, una vez que conoces el diseño   razones - el compilador tendría que hacer un pase adicional a través   todas las unidades de compilación (archivos .java) para averiguar qué clases   estaban donde, y eso haría la compilación aún más lenta.

enlace

    
respondido por el Landei 16.01.2012 - 18:53
8

Razones por las que puedo pensar

  • Hace que la búsqueda de otras clases sea un poco más fácil para el compilador al principio, ya que no tiene que buscar todos los miles de archivos de clase potenciales para una clase pública aleatoria, solo puede ir al archivo.
    • Probablemente esto ya no importa, pero acaba de comenzar la primera convención que nunca cambió
  • En la compilación, un cambio en un archivo solo afecta a ese archivo. Si hay varias clases, entonces todo tiene que ser recompilado
  • Práctica recomendada: tener varias clases públicas en el mismo archivo hace que las cosas se confundan. El propósito de los archivos es organizar el código fuente, el propósito de las carpetas es organizar los archivos. Si todas las clases de un paquete en particular están en un solo archivo súper de 100 MB, perderá todas las ventajas y no obtendrá ninguna de las ventajas de los archivos (además de agregar muchos dolores de cabeza al editar)
respondido por el TheLQ 16.01.2012 - 19:06

Lea otras preguntas en las etiquetas