Java 如何在调用cls.builder.param().build()时使用伪值初始化生成器类成员
调用.param()时,我需要使用一些伪值初始化我的生成器类成员 当我像下面这样调用构建器类时,我希望用一些伪值(或空字符串)初始化它们,其余的应该为null。如果我使用LOMBOK builder,它必须用一些值初始化为.param1(“一些字符串”)。这里有图书馆可以帮助我吗Java 如何在调用cls.builder.param().build()时使用伪值初始化生成器类成员,java,oop,design-patterns,lombok,builder,Java,Oop,Design Patterns,Lombok,Builder,调用.param()时,我需要使用一些伪值初始化我的生成器类成员 当我像下面这样调用构建器类时,我希望用一些伪值(或空字符串)初始化它们,其余的应该为null。如果我使用LOMBOK builder,它必须用一些值初始化为.param1(“一些字符串”)。这里有图书馆可以帮助我吗 MyQuery query = MyQuery.builder() .param1() .param2() .param3()
MyQuery query = MyQuery.builder()
.param1()
.param2()
.param3()
.build();
无论我调用哪个参数,都应该有一些伪值(非null,也可以是空的)。在查看lombok builder文档之后,我意识到我可以做如下操作。如果已经存在同名资源,Lombok将不会生成资源。这种方法仍将减少一些锅炉铭牌代码
import lombok.Builder;
@Builder
public class MyQuery {
private static final String SOME_STRING = "This is needed";
private String paramWithNoSpecialCase // This is any other parameter, lombok will generate the builder for this.
private String param1;
private String param2;
private String param3;
public static class MyQueryBuilder {
public MyQuery.MyQueryBuilder param1() {
this.param1 = SOME_STRING;
return this;
}
public MyQuery.MyQueryBuilder param2() {
this.param1 = SOME_STRING;
return this;
}
public MyQuery.MyQueryBuilder param3() {
this.param1 = SOME_STRING;
return this;
}
}
}
您只需分配默认值并在这些字段上添加
@Builder.default
。如果使用@Builder.default,相同的参数将始终具有默认值。我想要类似这样的东西:如果我调用.PARAM1(),那么只有PARAM1值应该指定给default。以及调用builder()时可以使用的任何参数
import lombok.Builder;
@Builder
public class MyQuery {
private static final String SOME_STRING = "This is needed";
private String paramWithNoSpecialCase // This is any other parameter, lombok will generate the builder for this.
private String param1;
private String param2;
private String param3;
public static class MyQueryBuilder {
public MyQuery.MyQueryBuilder param1() {
this.param1 = SOME_STRING;
return this;
}
public MyQuery.MyQueryBuilder param2() {
this.param1 = SOME_STRING;
return this;
}
public MyQuery.MyQueryBuilder param3() {
this.param1 = SOME_STRING;
return this;
}
}
}