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