局部变量类型推断未被识别
Posted
技术标签:
【中文标题】局部变量类型推断未被识别【英文标题】:Local Variable Type Inference not being recognized 【发布时间】:2018-09-09 21:14:31 【问题描述】:我安装了 JDK 10 来试用新功能,但我对var
很感兴趣——出于某种原因,即使将 JDK 添加到 IntelliJ(2018.1 版),以下代码仍然不会编译,说Java找不到符号var
:
public class Variations
public static void main(String[] args)
var local = "foo";
System.out.println(local);
我是否在这里遗漏了一些明显的东西,或者 IntelliJ 中是否有我应该启用的选项?
编辑:project 和 module SDK 和语言级别都设置为 Java 10 安装和 lvl。 10(虽然不是X - experimental
级别)。
【问题讨论】:
检查项目和所有模块是否使用了 JDK 10。所有模块的语言级别也应设置为 10,相关截图见***.com/a/12900859/104891。 @CrazyCoder 不幸的是,这些都很好——这也是我的第一个想法(我确实必须改变它们),但重建也没有帮助。不过,我会将其添加到问题中,因为这是一个有效的观点。 请尝试文件 |使缓存无效 |无效并重新启动。删除 IDE 配置 (intellij-support.jetbrains.com/hc/articles/206544519) 并从头开始设置 JDK。如果问题仍然存在,请分享Minimal, Complete, and Verifiable example。 【参考方案1】:显然,虽然硬重启 IDE 是不够的,但通过在项目和模块上将语言级别设置为 X - Experimental features
一次,然后将其重新设置为 lvl。 10 个 足以让 IDE 恢复正常。
我想我应该感谢@CrazyCoder 给了我这个想法,即使是间接的。
【讨论】:
【参考方案2】:在 Settings/Build/Compiler/Java Compiler 中,您必须在每个模块中将“目标字节码版本”更改为 10。
【讨论】:
解释他为什么应该这样做也很有帮助。 是的,这是我做的第一件事。显然,我必须将语言级别超过 10,然后再降低一次,这使 IDE 恢复正常。【参考方案3】:我在网上搜索了一段时间,发现 IntelliJ 完全支持它。您是否检查过您在 IntelliJ 上运行的 SDK 版本是否为第 10 版? 您可以前往项目结构 (Alt+Shift+Ctrl+S)、SDKS查看。如果您在面板左侧没有看到标签 10.0,则从这里开始,只需使用加号按钮手动添加它。 希望这会有所帮助。
【讨论】:
毫无疑问,我将它设置为 Project SDK,并且我也将语言级别设置为 10 - 根据所有的说法和推理,它应该支持它,并且此代码应该编译。因此我很困惑。【参考方案4】:您的代码在 2018 年 3 月 27 日 构建的我的 MacOS IntelliJ 2018.1 上与 Java10 一起运行良好。
IntelliJ IDEA 2018.1(社区版) 构建 #IC-181.4203.550,构建于 2018 年 3 月 27 日
您的 IntelliJ 或 JDK
可能有错误。尝试从终端使用jshell
。如果可以,应该更新您的 IntelliJ。如果不能,应该检查你安装的JDK
。我机器上的版本:
《10》 2018-03-20 Java(TM) SE 运行时环境 18.3 (build 10+46)
【讨论】:
以上是关于局部变量类型推断未被识别的主要内容,如果未能解决你的问题,请参考以下文章