[英]whats the difference between the class files generated for a class with main function and the one without main function?
我是Java的初學者,我想知道為具有主功能的類創建的類文件和為不具有主功能的類創建的類文件之間的區別是什么。我們可以創建不具有主功能的類並能夠對其進行編譯,因此什么是生成的類文件之間的區別。它可能看起來像一個愚蠢的問題,但我只想知道答案。
先感謝您
對於具有public static void main(String ..args)
一個類,沒有特殊的字節碼,該方法的編譯方式與其他任何方法相同。
區別在於Java虛擬機(不是編譯器), 其規范指出:
Java虛擬機通過使用引導類加載器(第5.3.1節)創建一個初始類來啟動,該類以與實現相關的方式指定。 然后,Java虛擬機將鏈接初始類,對其進行初始化, 然后調用公共類方法void main(String []) 。
編譯器沒有區別。
在編譯的字節碼中是方法。
如果有
public static void main(String[] args){}
您將獲得一個類,可以通過調用來開始
java ClassName
按照慣例,主方法必須啟動(如果由Java調用)。
更新
在Java 7之前,您可以啟動這樣的JavaClass(沒有主方法):
//Don't use this
public class RunnableNoMain{
static { new RunnableNoMain(); } //creates an instance.
}
靜態初始化器將創建一個實例並執行代碼。 之后,將出現NoSuchMethodException(找不到主文件)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.