Faj*_*zny 9 java intellij-idea lombok
I've been using Lombok with IntelliJ for a while now. I have installed newest (v. 0.28) Lombok plugin, enabled annotation processing and added a Lombok dependency (v. 1.18.10) in pom.xml. It all worked well until today, when I wanted to implement the experimental @SuperBuilder.
I have a simple hierarchy:
@SuperBuilder
public class User {
private String a;
}
@SuperBuilder
public class Employee extends User {
private int b;
}
@SuperBuilder
public class Employer extends User {
private double c;
}
Run Code Online (Sandbox Code Playgroud)
I wanted to set the fields from parent's class in child's builder, e.g.:
Employee.builder().a("Positive").b(1).build();
Employer.builder().a("Negative").c(-2.1).build();
Run Code Online (Sandbox Code Playgroud)
乍一看,这一切似乎都有效 - 当文件打开并且构建器正常时没有显示错误。但是在mvn clean compile 之后,我在每个 @SuperBuilder 行(即在这 3 个类中的每一个中)得到以下结果:
Error:(20) java: cannot find symbol
我在这里缺少什么?我尝试更新 Lombok 插件版本并重新安装它,但没有任何成功。
好的,我找到了。我错过了 User 类扩展了我们应用程序中每个实体都扩展的基本类。看起来很明显,但我没有注意到......
不管怎样,我只是通过在终端中运行mvn clean install才发现- 输出比 IntelliJ 中的输出要详细得多,并且它指出了这个类。在其上添加@SuperBuilder注释后编译成功。
但@SuperBuilder(toBuilder=true)是使用它的正确方法。
我遇到了同样的问题,添加 @SuperBuilder 到所有“基”类中解决了这个问题。
前:
abstract class Parent {
...
}
@SuperBuilder
class Child extends Parent {
...
}
Run Code Online (Sandbox Code Playgroud)
后:
@SuperBuilder // <- addded
abstract class Parent {
...
}
@SuperBuilder
class Child extends Parent {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4037 次 |
| 最近记录: |