idea language level 介绍(转载)

本文深入解析IntelliJ IDEA中LanguageLevel的功能,解释如何通过它来限定项目编译检查时所需的JDK特性,确保代码兼容性和新特性的正确使用。同时,介绍了如何在不同模块中配置不同的SDK和LanguageLevel。

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

转自:idea language level 介绍 

转载于:https://www.cnblogs.com/KnightKitt/p/8904001.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值