代码之家  ›  专栏  ›  技术社区  ›  GuruKulki

如果编译空的Java文件会发生什么?

  •  7
  • GuruKulki  · 技术社区  · 15 年前

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

    9 回复  |  直到 8 年前
        1
  •  14
  •   Amir Afghani    11 年前

    javac 开始,看到文件中没有声明类,然后结束。为了一个 .class 要创建的文件中必须至少有类声明。

        2
  •  6
  •   Fredrik    15 年前

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

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

        3
  •  2
  •   TofuBeer    15 年前

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

    // Foo.java 
    class Bar
    {
    }
    

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

    与其为你做出选择,它什么也不做(我自己也会预料到一个错误…但也没什么是明智之举)。

        4
  •  1
  •   zellio    15 年前

    如果文件是完全空的,只是调用.java,那么编译器在尝试生成类文件时不需要做任何事情。如果你有

    class Foo {
    }
    

    在.java文件中,将生成一个空的CASS文件(Fo.class)。

        5
  •  1
  •   Lekha    12 年前

    类空循环 { }

    //可以成功编译EmptyClass并生成.class文件,但在执行过程中失败,因为jvm在类“EmptyClass”中找不到“main method”

        6
  •  1
  •   rbrito    12 年前

    如果您已经声明了类(例如, public class test{ } ,它将编译并创建 test.class 文件。它不会跑,因为它没有 main 方法。

        7
  •  0
  •   Omry Yadan    15 年前

    javac为每个类声明(显式或匿名)创建一个类文件。 由于Java文件不包含任何内容,编译器完全没有生成任何类文件。

        8
  •  0
  •   Micho fengkb    8 年前

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

        9
  •  -1
  •   Neeraj    15 年前

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