空文件是有效的Java源文件.如何在JVM中处理它?

sri*_*ini 5 java jvm

空文件是有效的Java源文件,但它是如何在JVM中处理的?

aio*_*obe 9

.java文件和.class文件之间没有一对一的关系.你所拥有的是(或类声明)和.class文件之间的一对一关系.

没有类声明的Java源文件不会产生任何.class文件,因此它根本不是由JVM 处理的.

$ touch Test.java

$ ls
Test.java

$ javac Test.java

$ ls
Test.java
Run Code Online (Sandbox Code Playgroud)

在Java语言规范中,Java源文件与编译单元同义.JLS中的相关部分是7.3编译单元.

语法描述如下:

CompilationUnit:
     PackageDeclaration opt ImportDeclarations opt TypeDeclarations opt
...

选择 -subscript说,部分是可选的.由于TypeDeclarations是可选的,因此不需要存在类声明.


kan*_*kan 3

javac*.class为文件中出现的每个内容生成文件.java。所以 - 他们都没有,编译器什么也不做。没有任何东西给jvm。