當我編譯一個空的java文件時,它沒有產生任何類文件。所以想知道在編譯一個空的java文件時編譯器是如何反應的。它應該在此產生一個空的類文件,爲什麼它沒有?如果你編譯一個空的java文件會發生什麼?
回答
javac
開始,看有沒有在文件中聲明的類,和完成。爲了創建.class
文件,您至少必須在文件中具有類聲明。
因此,這意味着一個成功的編譯沒有錯誤? – user55924 2017-07-13 04:49:01
如果該文件是完全空的,只是所謂的.java那麼就沒有編譯器,當您試圖生成一個類文件做。如果你有在java文件,然後空CALSS文件(讓Foo.class)一
class Foo {
}
段將產生
那麼考慮到Java文件可能是這樣的:
// Foo.java
class Bar
{
}
它如何知道該怎麼稱呼這件事?也應該使它成爲一個類或接口或枚舉?
而不是讓你什麼都不做的選擇(我本來期望的錯誤自己...但沒有什麼是做的一樣好一個理智的事情)。
幾乎爲空的.java文件用於包註釋,因此對空白源文件不做任何處理會比將其視爲錯誤更有意義。請參閱http://java.sun。com/docs/books/jls/third_edition/html/packages.html#7.4.1.1 – 2010-03-18 05:52:15
未命名的包雖然真的是空的... – TofuBeer 2010-03-18 06:04:56
大部分的答案說的話是真的,一個類文件不是編譯的Java文件,而是一個類的二進制表示。
編譯Java文件可能會導致兩個類文件,如果java文件包含兩個類(雖然只能有一個公共的),這就是爲什麼編譯一些與零班會導致零類文件。
javac的開始,並檢查文件的大小,如果它爲零,那麼它只是返回不會造成任何的.class文件。
javac爲每個類聲明(顯式或匿名)創建一個類文件。 因爲你的java文件不包含任何東西,所以編譯器不會生成任何類文件。
如果您想聲明該類(例如,public class test{ }
),它會編譯並創建test.class
文件。它不會運行b'cos它不具有main
方法。
實際上可以創建(至少在OpenJDK 1.6中)一個空文件並編譯它,但是:1.它不會生成'.class'文件並且2.它不會生成警告。 – rbrito 2012-11-29 15:38:02
類Emptyclass {}
// Emptyclass可以成功地進行編譯,也生成.class文件,但在執行過程中失敗了,因爲JVM亙古不找「主要方法」類「Emptyclass」
雖然真的,執行失敗不是問題,是它:-) – kleopatra 2012-10-03 15:02:45
Java不會創建該java文件的類文件。因爲首先它會查找班級名稱。所以什麼都不會發生
- 1. 如果你傳入一個無效的widgetvar會發生什麼?
- 2. 如果編譯AOSP/CM會發生什麼中斷
- 3. 調用一個空的基類函數,在編譯時會發生什麼?
- 4. 當我編譯時會發生什麼?
- 5. 如果我使用[MarshalAs(UnmanagedType.LPStr)]編組一個空指針,會發生什麼?
- 6. Qt:如果你發送信號太快會發生什麼?
- 7. 如果你用另一個承諾解決承諾會發生什麼?
- 8. 你怎麼做到這一點,當你按下一個鍵會發生什麼
- 9. 當你聲明一個具有空邊界的數組時會發生什麼
- 10. 如果兩個人同時提交編輯,會發生什麼
- 11. 爲什麼編譯一個PHP文件?
- 12. 如果你兩次調用jQuery $ .getScript('myscript.js')會發生什麼?
- 13. AS3如果你不擴展Object,會發生什麼?
- 14. Erlang:當你f()中的一個Pid時會發生什麼?
- 15. 爲什麼會發生? java
- 16. 如果你想描述一個Ajax,你會說什麼?
- 17. 當你rm文件時會發生什麼?
- 18. 如果我用空的url調用jQuery.post()會發生什麼?
- 19. 當你運行一個程序時會發生什麼?
- 20. C++,如果文件在讀取時移動會發生什麼?
- 21. 如果我刪除apache日誌文件會發生什麼?
- 22. MS SQL Server 2005:如果LDF文件丟失會發生什麼?
- 23. 如果我刪除gps.conf文件會發生什麼
- 24. 如果我在XCODE中重命名文件會發生什麼?
- 25. 如果.wav文件全是1或-1,會發生什麼?
- 26. 當你爲linux內核編寫一個路徑時會發生什麼
- 27. 如果你沒有在你的apache配置文件中指定目錄索引,會發生什麼?
- 28. 如果HttpClient.execute()中斷會發生什麼?
- 29. 如果action =「」會發生什麼?
- 30. 如果在另一個實例已經運行的情況下編譯了程序,會發生什麼情況?
聽起來像你回答你自己的問題。如果你想知道它爲什麼會發生,那是一個不同的問題。 – MatrixFrog 2010-03-18 05:36:49
我問我爲什麼也這麼想。 – GuruKulki 2010-03-18 05:39:47
這就是發生了什麼,如果(javaFileContent.indexOf(「class」)< - 1)return null; :)我只是在開玩笑 – medopal 2010-03-18 07:03:57