[英]How to generate getters for lombok Builder?
我有以下定义:
@Value
@Builder(toBuilder = true)
public class MyEntity {
String name;
}
当尝试在构建器上使用 getter 时,例如MyEntityBuilder.getName()
,IDEA 声明它“无法解析方法”。 此外,IDEA 不会自动完成它。
唯一可用的方法(除了build()
)是 setter: MyEntityBuilder name(String name);
有没有办法在 lombok 生成的构建器上生成 getter? 谢谢。
使用 Lombok 1.8.16
。
您提到您使用 IntelliJ IDEA 作为您的 IDE。 碰巧有一个专门用于此的 IDEA 插件: https : //plugins.jetbrains.com/plugin/6317-lombok
安装插件后,IDEA 应该能够识别 Lombok 的注释语法。
构建器通常没有吸气剂。 建造者模式是这样的:
DwB 的回答表明构建器模式不需要也不使用 getter。
您可以为 Lombok builder 值设置一个 getter,但我认为它不会很有用。 您可以通过以下方式自定义构建器:
@Value
@Builder(toBuilder = true)
public class MyEntity {
String name;
String name2; // just something to set also
// Customized builder
public static class MyEntityBuilder {
private String name;
public String getName() {
return this.name;
}
// This is not actually needed but just as an example howto
// customise a setter.
public MyEntityBuilder name(String name) {
this.name = name;
return this;
}
}
}
并对其进行测试(Junit5):
@Test
void test() {
MyEntityBuilder meb = MyEntity.builder();
var myEntity = meb
// You need to set this first to access it later
.name("Name #1")
// The benefit having a getter ?
.name2(meb.getName())
.build();
assertEquals(myEntity.getName(), myEntity.getName2());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.