如果编译一个空的java文件会发生什么?

当我编译一个空的java文件时,它没有生成任何类文件。 所以想知道编译器在编译空java文件时如何反应。 它应该在这里生成一个空类文件,为什么不呢?

javac启动,看到文件中没有声明类,并完成。 为了创建.class文件,您必须至少在文件中包含类声明。

大多数答案都说的是,类文件不是编译的java文件,而是类的二进制表示。

如果java文件包含两个类(虽然只有一个可以是公共的),编译java文件可能会产生两个类文件,这就是为什么编译零类的东西将导致零类文件。

鉴于Java文件可能是这样的:

 // Foo.java class Bar { } 

怎么会知道怎么称呼这个东西? 它还应该使它成为一个类或接口或枚举?

它没有为你做出选择,它没有做任何事情(我本来期望自己犯错误……但是没有什么是理智的事情)。

如果文件完全为空并且只是调用.java,那么当您尝试生成类文件时,编译器无需执行任何操作。 如果你有

 class Foo { } 

在.java文件中的段然后将生成一个空的calss文件(Foo.class)

class Emptyclass {}

//可以成功编译Emptyclass并生成.class文件,但是在执行期间它会失败,因为JVM在类’Emptyclass’中找不到’Main Method’

如果您已经声明了该类(例如, public class test{ } ),它将编译并创建test.class文件。 它不会运行b’cos它没有main方法。

javac为每个类声明(显式或匿名)创建一个类文件。 由于你的java文件不包含,编译器只是没有生成任何类文件。

Java不会创建该java文件的类文件。 因为首先它会寻找类名。 所以什么都不会发生

Javac启动并检查文件的大小,如果它为零,那么它只返回而不创建任何.class文件。