2015-09-29 54 views
0

當我們使用javac選項:
-source-target
編譯器如何「知道」的代碼產生?javac的源和目標選擇使用

我的意思是,任何編譯器如何知道任何以前的 java版本的規範,或者我必須做一些設置以便爲它提供一些關於它們的信息?

+0

查看相關問題http://stackoverflow.com/questions/21204299/compile-using-source-and-target-javac-options和http://www.codejava.net/java-core/tools/using- javac的命令。 – user1929959

回答

0

javac程序知道如何在不提供任何額外信息的情況下處理這些參數。但請注意,這裏有一點陷阱:這些選項與源語法和類文件的形式和內容有關,但它們不包含考慮到Java標準庫。因此,儘管將源代碼版本或目標Java代碼版本設置爲較早的版本,但它們將完全滿足編譯依賴於標準庫類或新Java(例如)Java 7中的方法的代碼。 原則上結果可以運行在較早的Java版本上,但實際上這會要求後面的標準庫至少部分地被回溯。

如果您正在開發 Java的特定最低版本,您應該使用該版本開發。如果您或其他人以後希望使用稍後的javac重建源,而不降低與較早版本的目標Java的運行時兼容性,那麼-source-target選項將發揮作用。

+0

對不起,我可以解釋一下你的意圖:原則上結果可以運行在早期的Java版本上,但實際上,這需要後面的標準庫至少部分地被回溯。謝謝;) – GionJh

+0

@GionJh,基本上,我的意思是「在實踐中,如果你的代碼依賴於給定版本的Java中新引入的標準庫特性,那麼無論你如何編譯它,它都不能在任何早期版本的Java上運行「。 –

+0

好的,非常感謝你:) – GionJh