IntelliJ IDEA中的项目语言级别是什么



我使用的是Java 7 SDK和IntelliJ IDEA IDE。

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)

我仍然不能使用Java7的功能。经过一点谷歌搜索,我可以在将项目语言级别设置为7(Diamond, ARM, multicatch etc)后使用所有功能。这到底是什么?如果这与正在使用的基于JDK的语法有某种关系,那么level 8(Lambda, annotations etc)是什么?Java 8还没有发布。据维基报道,Java 8预计将于2014年3月推出。请有人解释一下这个语言层面的概念。

Language level设置集具有编辑器中应支持的代码辅助功能。例如,如果您使用JDK 1.7,但希望您的代码与JDK 1.6兼容,则可以将语言级别设置为低于JDK实际支持的级别(JDK 1.6为6.0),并且只获得1.6及更低版本支持的重构/语法建议。根据编译器的不同,它还可能为编译器提供删除对较新语法元素的支持的选项。

8.0(正如您所猜测的,它对应于Java 8)可用于那些想要尝试可用的Java 8快照之一的人。由于Java8尚未发布,8.0语言级别在发布之前可能会发生很大变化。

根据IntelliJ Wiki中探索常规项目设置一节中的文档,项目语言级别会影响IDE提供的intellisense。

它还规定了IntelliJ在开发时编译Java代码时所使用的编译器的行为。

此设置告诉可用于项目的编译器的所有设施。例如,将语言级别设置为JDK 5将允许IntelliJ识别源代码中存在的关键字,如enum

如果查看javac Java编译器命令的选项,您会发现-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的测试版可以进行测试。

我从未尝试过如果将语言级别设置为高于JDK版本的级别会发生什么。

最新更新