java - 是否可以将 IntelliJ 的 'Analyze Data Flow to Here' 功能与 Java Lombok 一起使用?

标签 java intellij-idea lombok intellij-lombok-plugin

我最近做了一个实验,看看如何使用 Lombok 来减少代码中的样板文件。

问题: 当通过 Lombok 注释使用构建器创建简单的数据类时,在 IntelliJ IDEA 中,我无法右键单击字段,然后选择分析数据流到此处。

这是使用最新的 IntelliJ Lombok 插件。 IntelliJ Ultimate 2019.2.3。

有解决这个问题的方法还是根本不支持它?

示例 1 - 无 lombok:

public class Person {

    private String name;
    private int age;

    private Person() {

    }

    public Person(Builder builder) {
        name = builder.name;
        age = builder.age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    public static class Builder {
        private String name;
        private int age;

        public Builder name(String val) {
            this.name = val;
            return this;
        }

        public Builder age(int val) {
            this.age = val;
            return this;
        }

        public Person build() {
            return new Person(this);
        }
    }
}
public class Main {

    public static void main(String[] args) {
        Person person = new Person.Builder().name("tom").age(3).build();
    }
}

使用上面的代码,当我右键单击“名称”变量并选择分析数据流到此处时,我可以看到数据流。如截图所示: enter image description here

示例 2 - 使用 Lombok:

import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@NoArgsConstructor
@Builder
@Getter
public class Person {
    private String name;
    private int age;
}
public class Main {
    public static void main(String[] args) {
        Person person = Person.builder().name("tom").age(3).build();
    }
}

在上面的代码示例中,在名称字段中选择“分析数据流到此处”将显示变量名称,但没有树可展开,如屏幕截图所示。 enter image description here

最佳答案

“分析到此处的数据流”不适用于 Lombok 注释提供的生成代码。

关于java - 是否可以将 IntelliJ 的 'Analyze Data Flow to Here' 功能与 Java Lombok 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58369520/

相关文章:

java - 如何在Android中将字符串从java代码发送到 native C

java - 如何实际解析接收到的json数据

Java - 泛型和通配符以及接口(interface)与实现

java - 使用 Retrofit 和 Mockito 进行 Android 单元测试

java - (java.lang.NoSuchMethodError) IntelliJ 中的 java.nio.file.Files.lines(Ljava/nio/file/Path;)

java - JUnit5:无法找到 AssertEquals

java - 从 InelliJ 自动导入功能中排除类/包

java - 使用带有继承的 Jackson 将字符串映射到对象

java - Lombok 创建多个 setter

java - lombok @AllArgsConstructor 构造函数