Что на самом деле сводится к тому, является ли пустой файл допустимой программой Java.Удивительно, но это!
Вот грамматика для CompilationUnit
... это технический термин, который JLS использует для исходного файла Java:
CompilationUnit:
OrdinaryCompilationUnit
ModularCompilationUnit
OrdinaryCompilationUnit:
[PackageDeclaration] {ImportDeclaration} {TypeDeclaration}
ModularCompilationUnit:
{ImportDeclaration} ModuleDeclaration
(Ссылка: JLS 7.3 )
Обратите внимание, что элемент OrdinaryCompilationUnit
позволяет иметь исходный файл, который состоит из:
- без оператора пакета
- нет операторов импорта
- нет объявлений типов
Другими словами, пустой файл или файл, который просто содержит комментарии.
Короче говоря, если вы скажетеjavac
для компиляции пустого файла он не вызовет ошибок компиляции ... потому что это "допустимый" файл исходного кода Java.