具有main函数的类和没有main函数的类生成的类文件之间的区别是什么?

时间:2014-06-30 06:37:24

标签: java

我是java的初学者我想知道为具有main函数的类创建的类文件与为没有main函数的类创建的类文件之间的区别。我们可以创建一个没有main函数的类,并且能够编译它,以便生成的类文件之间的区别。它可能看起来像一个愚蠢的问题,但我只是想知道答案。

提前谢谢

2 个答案:

答案 0 :(得分:4)

对于具有public static void main(String ..args)的一个类,没有特殊的字节码,该方法的编译方式与任何其他方法相同。

不同之处在于Java虚拟机(而不是编译器),whose specification说明了这一点:

  

Java虚拟机通过使用引导类加载器(第5.3.1节)创建一个初始类来启动,该类以依赖于实现的方式指定。然后,Java虚拟机链接初始类,初始化它,并调用公共类方法void main(String [])

答案 1 :(得分:2)

编译器没有区别。

在编译的字节码中是方法。

如果有

public static void main(String[] args){}

您将获得一个Class,可以通过调用

启动
java ClassName

只是一种约定,即如果由Java调用,则启动main方法。

<强>更新

在Java 7之前,你可以像这样启动JavaClass(没有main方法):

//Don't use this
public class RunnableNoMain{
   static { new RunnableNoMain(); } //creates an instance.
}

静态初始化程序将创建实例并执行代码。之后,会有NoSuchMethodException(找不到主要的)