Lombok 中的 Val 在 IntelliJ 中产生 "incompatible types" 错误,但仍然可以正常编译
Val in Lombok produces "incompatible types" error in IntelliJ but still compiles fine
我找到了这段代码:
Class<? extends Enum> enumClass = Class.forName(Charsets.class.getName())
.asSubclass(Enum.class);
我想用 Lombok 重构它,但是发生了意想不到的事情。当我将其更改为:
val enumClass = Class.forName(Charsets.class.getName())
.asSubclass(Enum.class);
我收到这个错误:
令人惊奇的是,代码编译正常,使用它的测试也通过了。
我不确定这是否是 Lombok 插件中的错误,IDE 还是我做错了什么。 Lombok 不应该能够轻松推断出变量的正确类型吗?
我的问题是:我可以安全地使用该代码还是应该恢复为原始代码?
我正在使用最新的(此时)InteliiJ:
IntelliJ IDEA 2016.3
Build #IU-163.7743.44, built on November 17, 2016
JRE: 1.8.0_112-release-408-b2 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
和 Lombok 插件:
Lombok Plugin
Version: 0.13.16
已确认使用 IntelliJ IDEA 2018.1.1 和 Lombok 插件 0.17-2018.1
Preferences > Plugins
> 为 IntelliJ 安装最新版本的 Lombok 插件
我找到了这段代码:
Class<? extends Enum> enumClass = Class.forName(Charsets.class.getName())
.asSubclass(Enum.class);
我想用 Lombok 重构它,但是发生了意想不到的事情。当我将其更改为:
val enumClass = Class.forName(Charsets.class.getName())
.asSubclass(Enum.class);
我收到这个错误:
令人惊奇的是,代码编译正常,使用它的测试也通过了。
我不确定这是否是 Lombok 插件中的错误,IDE 还是我做错了什么。 Lombok 不应该能够轻松推断出变量的正确类型吗?
我的问题是:我可以安全地使用该代码还是应该恢复为原始代码?
我正在使用最新的(此时)InteliiJ:
IntelliJ IDEA 2016.3
Build #IU-163.7743.44, built on November 17, 2016
JRE: 1.8.0_112-release-408-b2 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
和 Lombok 插件:
Lombok Plugin
Version: 0.13.16
已确认使用 IntelliJ IDEA 2018.1.1 和 Lombok 插件 0.17-2018.1
Preferences > Plugins
> 为 IntelliJ 安装最新版本的 Lombok 插件