回答
是的,你至少需要一個類纔能有一個程序,但是沒有,你不需要任何方法(與其他答案相反)。
你需要一個類的原因是因爲在Java中,所有代碼都在類內部。所以要有任何代碼,你需要一個類。但是,代碼不一定需要在方法中。它也可以在初始化器中。所以,在這裏是沒有方法的完整的Java程序:
class LookMaNoMethods {
static {
System.out.println("Hello, world!");
System.exit(0);
}
}
這一點讓...
$ javac LookMaNoMethods.java
$ java LookMaNoMethods
Hello, world!
$
編輯:從Java 7只靜態塊上面的代碼並沒有主要的方法不產生任何輸出。主要方法現在是強制性的。沒有main方法的代碼編譯成功。
有趣。具有靜態初始化器的類是一個有效的程序,即使沒有'main'方法,如果沒有靜態初始化器,那麼將再次需要該方法。我想知道標準究竟是如何準確地說明入口點的要求。 – 2011-03-05 14:53:21
靜態塊在內部實現爲特殊類型的方法(「
此程序僅適用於因爲靜態初始化程序在顯示有關缺少主要方法的錯誤消息之前調用System.exit()。 – 2011-03-05 17:21:43
是的。在Java中,您總是需要一個具有main函數的類來讓JRE運行它。
這不是原因。 Ruby也是面向對象的,但它不需要任何類。原因只是「因爲」。 – 2011-03-05 14:29:39
嗯,我同意這個意思是不正確的。 '太陽想要這樣嗎?'。 – Konerak 2011-03-05 14:30:22
Groovy(顯然建立在JVM之上)不需要任何類來運行。但是生成的字節碼定義了幕後的類。 – 2011-03-05 14:33:14
程序需要一個入口點。入口點必須是一種方法。在Java中,每個方法都必須包含在一個類中。
這意味着每個程序都必須至少有一個類。
這是一個非常合理的答案,但「入門點必須是一種方法」並不完全是真實的。看到我的答案是一個不是方法的入口點。 – rlibby 2011-03-05 14:48:19
從JVM的角度來看;是。從程序員的角度來看,它可以是Class或Enum。
public enum AAA {
AAA;
public static void main(final String[] args) {
System.out.println("H");
}
}
編輯:即使你有一個空的main方法的類,有很多它的幕後工作,只需運行「空」類你的核心類。可以通過設置-verbose:class
JVM參數來查看這些類的列表(大約200個來自java.*
程序包)。
Java枚舉*很怪異。 – 2011-03-05 14:39:18
但是Enum是一個類:http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Enum.html。新的關鍵字是隱藏類關鍵字的語法糖。 – duffymo 2011-03-05 15:45:03
是的,你至少需要一門課。
- 1. 每個目錄都需要一個ashx處理程序文件嗎?
- 2. 每個新視圖都需要一個新的layoutparams嗎?
- 3. PHP MVC - 每個頁面都需要自己的類嗎?
- 4. 每個線程都不需要它自己的JVM副本嗎?
- 5. JavaScript類 - 每個用途都需要「this.varname」嗎?
- 6. Ruby on Rails 3中的每個角色都需要一個控制器嗎?
- 7. 我需要一個處理程序嗎?
- 8. ZeroMQ上的每個隊列都需要自己的端口嗎?
- 9. 我需要一個畫廊的幫助,每個人都有jCarousel
- 10. 每個頁面上的InitializeCulture()都需要嗎?
- 11. 每個請求都需要執行SetAuthCookie
- 12. Netty處理程序對每個連接都是唯一的嗎?
- 13. 需要幫助瞭解一個PHP示例,而每個人都需要
- 14. 每個單元格都需要有一個Section - Parse和Swift
- 15. 每個項目都需要MainController.xib文件嗎?
- 16. 每個'ftplugin/name.vim`都需要定義`b:undo_ftplugin`嗎?
- 17. Java泛型:類,需要一個類,它另一個類
- 18. 每個域都有唯一的IP嗎?
- 19. 你需要每個主題的KafkaTemplate嗎?
- 20. Java程序中的遞歸需要重複上一個數字
- 21. CPPUNIT:我們真的需要每個測試一個功能嗎?
- 22. 在Java中連接2個不同的程序(每個程序都有其主要方法)
- 23. 我真的需要創建一個類來處理java中的每個事件嗎?
- 24. Java中的每個循環都有一個這樣的事情嗎?
- 25. 我需要一個存儲過程嗎
- 26. 需要一個好的MATLAB類教程
- 27. 我需要一個變量訪問整個程序在Java
- 28. 每個有'編輯'或'完成'按鈕的視圖都需要在UINavigationController中嗎?
- 29. 爲什麼java中的每個類都是對象的子類?
- 30. 我需要爲我的數據庫每個表的類嗎?
對於核心和企業Java以及其他任何類型而言,總是如此。 – duffymo 2011-03-05 14:30:09
您需要加載對象和字符串,然後才能加載空的mian(String [])方法,這會產生三個;) – 2011-03-05 15:07:24
@Peter:它位於'java。*'包中的200個類的某處;看到我更新的答案。 – 2011-03-05 15:20:50