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

IT小君   2021-12-02T15:49:33

我正在使用 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)

我仍然无法使用 Java 7 功能。经过一番谷歌搜索后,我可以在将项目语言级别设置为7(Diamond, ARM, multicatch etc). 这究竟是什么?如果这与使用的基于 JDK 的语法有某种关系,那是level 8(Lambda, annotations etc)什么?Java 8 尚未发布。根据 Wiki,Java 8 预计在 2014 年 3 月发布。有人请解释这个语言级别的概念。

评论(3)
IT小君

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

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

2021-12-02T15:49:34   回复
IT小君

如果您查看Java 编译器命令选项javac,您会看到-source-target选项允许您针对 Java 的替代版本进行编译。我不确定 IntelliJ 的语言级别设置对应哪个选项(很可能-source),但它本质上告诉 IntelliJProject SDK在指定的 Java 语言版本中使用提供的 Java SDK(在现场),而不是所述 SDK 提供的最新版本。

因此,当您安装了 Java 7 时,您可以将语言级别设置为6.0,IntelliJ 将根据 Java 6 规范而不是 Java 7 规范编译您的代码。这包括在您键入时完成的所有实时建议和代码检查。

Java 8 选项可能存在,因为 Java 8 的 beta 版本可用于测试。

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

2021-12-02T15:49:34   回复
IT小君

按照段内的文件探索常规项目设置的IntelliJ的Wiki,项目语言水平的影响IDE提供智能感知。

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

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

2021-12-02T15:49:34   回复