Nam*_*man 7 java intellij-idea intellij-lombok-plugin java-14 java-record
只是尝试动手操作java.lang.Record。我已经阅读了文档和JEP-359以获得一些理解。因此,在阅读构造函数的隐式声明时,我想到将其与现有的代码生成库 - Lombok 混合!
现在我最终创建的一个最小的可重复示例是这个记录
import lombok.AllArgsConstructor;
@AllArgsConstructor
public record Java(String version) {
}
Run Code Online (Sandbox Code Playgroud)
使用 IntelliJ 编译时成功生成类文件,如下所示
public final class Java extends java.lang.Record {
private final java.lang.String version;
public Java(java.lang.String version) { /* compiled code */ }
... rest of the compiled code
}
Run Code Online (Sandbox Code Playgroud)
请注意,.class文件的构造函数也正是我在这两个世界中独立所期望的。但是,在 IntelliJ 编译期间进一步尝试创建此记录的实例失败:
public class MixOfWorlds {
public static void main(String[] args) {
System.out.println(new Java("14").version()); // cannot resolve constructor
}
}
Run Code Online (Sandbox Code Playgroud)
我将创建一个更简单的示例来javac使用java工具执行编译和执行。如果这是由于我可能忽略的某些事情而可能发生的预期行为,我仍在寻找答案?
IntelliJ IDEA 2020.1 EAP (Community Edition)
Build #IC-201.6487.11, built on March 18, 2020
Runtime version: 11.0.6+8-b765.15 x86_64
macOS 10.14.6
Run Code Online (Sandbox Code Playgroud)
这就是它在 IntelliJ 中在两种情况下的反映方式 - 有和没有@AllArgsConstructor.

跟进此事并在 IntelliJ 开发人员的在线帮助下,我尝试了以下步骤来解决此问题-
javac-lombok交互并且没有连接到 IDE。注意:第二步是安装插件。简而言之,插件会突出显示代码,好像它不会编译一样,但实际执行由 IntelliJ 正确处理。(点赞!)
编辑:随着1.8.20版本的发布,Lombok 会阻止 arecord再被 an 注释AllArgsConstructor。您可以在此处访问官方变更日志。
| 归档时间: |
|
| 查看次数: |
625 次 |
| 最近记录: |