Java 如何在调用cls.builder.param().build()时使用伪值初始化生成器类成员

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()

调用.param()时,我需要使用一些伪值初始化我的生成器类成员

当我像下面这样调用构建器类时,我希望用一些伪值(或空字符串)初始化它们,其余的应该为null。如果我使用LOMBOK builder,它必须用一些值初始化为.param1(“一些字符串”)。这里有图书馆可以帮助我吗

    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;
            }
        }
    }