idea language level 介紹


language level 介紹

其他 IDE 沒有看到類似 language level 的設置,所以這個功能應該算是 IntelliJ IDEA 特有的,可是 IntelliJ IDEA 官網也沒有專門介紹 language level 的地方,也許 IntelliJ IDEA 認為這個知識點屬於 JDK 范疇所以沒加以介紹吧。所以這里主要我對此的一些理解。我們應該知道 Java JDK 在每個新版本都會有其新特性,而新版本一般也會向下兼容舊版本的特性,IntelliJ IDEA 是對這些 JDK 的新特性是這樣介紹的:

  • JDK 6 的新特性:@Override in interfaces
  • JDK 7 的新特性:Diamonds,ARM,multi-catch etc.
  • JDK 8 的新特性:Lambdas,type annotation etc.
  • JDK 9 的新特性:Jigsaw project etc.
  • etc. == et cetera == and so on == 等等

  • 如上第一張圖標注 1,使用的是 JDK 7,顯示的 SDK default 為 7 - Diamonds,ARM,multi-catch etc.
  • 如上第二張圖標注 1,使用的是 JDK 8,顯示的 SDK default 為 8 - Lambdas,type annotation etc.

當我們使用 JDK 8 的時候,我們只能向下兼容 JDK 8 及其以下的特性,所以只能選擇 8 及其以下的 language level。所以當我們項目使用的是 JDK 8,但是代碼卻沒有使用 JDK 8 的新特性,最多使用了 JDK 7 的特性的時候我們可以選擇 7 - Diamonds,ARM,multi-catch etc.

對此我們總結 language level:限定項目編譯檢查時最低要求的 JDK 特性。

現在假設我們有一個項目代碼使用的 JDK 8 新特性:lambda 語法,但是 JDK 選擇的卻是 JDK 7,即使 language level 選擇了 8 - Lambdas,type annotation etc.,也是沒有多大意義的,一樣會編譯報錯。

Module 下的 SDK 和 language level

對於大型項目,各個 Module 用到的 SDK 和 language level 很有可能是各不一樣的,IntelliJ IDEA 對此也進行了支持。

  • 如上圖標注 1 所示,可以針對 Module 選擇其他 SDK,默認選擇的是 Project SDK

  • 如上圖標注 1 所示,可以針對 Module 選擇其他 language level,默認選擇的是 Project language level


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM