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

时间:2010-03-18 05:34:47

标签: java

当我编译一个空的Java文件时,它没有生成任何类文件。所以我想知道编译器在编译空Java文件时如何反应?我认为在这种情况下应该生成一个空类文件,但事实并非如此。那为什么不呢?

9 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:6)

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

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

答案 2 :(得分:2)

考虑到Java文件可能是这样的:

// Foo.java 
class Bar
{
}

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

而不是为你做出选择它没有做任何事情(我本来应该预料到错误......但是没有什么是理智的事情)。

答案 3 :(得分:1)

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

class Foo {
}
<。> .java文件中的段然后将生成一个空的calss文件(Foo.class)

答案 4 :(得分:1)

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

答案 5 :(得分:1)

类Emptyclass { }

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

答案 8 :(得分:-1)

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