2013-07-18 120 views
48

我正在使用Java 7 SDK和IntelliJ IDEA IDE。什麼是IntelliJ IDEA中的項目語言級別?

java version "1.7.0_11" 
Java(TM) SE Runtime Environment (build 1.7.0_11-b21) 
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode) 

我仍然無法使用Java 7的功能。經過一些Google搜索後,我可以在將項目語言級別設置爲7(Diamond, ARM, multicatch etc)後使用所有功能。這究竟是什麼?如果這與使用基於JDK的語法有一些關係,那麼level 8(Lambda, annotations etc)? Java 8尚未發佈。根據Wiki,Java 8預計將於2014年3月發佈。有人請解釋這種語言層面的概念。

回答

69

Language level設置設置編輯器應支持哪些代碼輔助功能。例如,如果您使用的是JDK 1.7,但希望您的代碼與JDK 1.6兼容,則可以將語言級別設置爲低於實際的JDK支持(對於JDK 1.6爲6.0),並且只提供重構/語法在1.6及更低版本上受支持。根據您的編譯器,它也可能會讓編譯器選項移除對較新語法元素的支持。

對於想要試用Java 8 snapshots之一的人,可以使用8.0(其中,正如你猜對應於Java 8)。由於Java 8未發佈,因此語言級別8.0在發佈之前可能會發生很大變化。

+0

那麼這些設置哪些設置哪些功能在編輯器中的代碼輔助應支持嵌入在IDE中,還是通過網絡獲取更新? –

+0

@AniketThakur它似乎與IDE本身一起更新,至少我從未注意到與IDE更新不一致的更改。 –

+0

確定gr8。謝謝! –

3

根據部分中的文檔瀏覽通用項目設置IntelliJ Wiki,項目語言級別會影響IDE提供的智能感知。

它還規定了IntelliJ在您開發時編譯Java代碼時所使用的編譯器的行爲。

該設置告訴編譯器的所有工具可用於該項目。對於例如將語言級別設置爲JDK 5將允許IntelliJ識別源代碼中存在的關鍵字,如enum

3

如果您看一下options for the javac Java compiler command,您會看到-source-target選項允許您針對不同版本的Java進行編譯。我不確定IntelliJ的語言級別設置對應哪種選項(很可能是-source),但它實際上告訴IntelliJ使用指定的Java語言版本中提供的Java SDK(在Project SDK字段中)而不是所提供的最新版本SDK。

所以,當您安裝了Java 7時,您可以將語言級別設置爲6.0,並且IntelliJ將根據Java 6規範而不是Java 7規範編譯您的代碼。這包括您輸入的所有實時建議和代碼檢查。

Java 8選項有可能是由於Java 8的beta版本可用於測試。

我從來沒有試過如果將語言級別設置爲高於JDK版本的情況會發生什麼情況。

相關問題