微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在调用 cls.builder.param().build() 时使用虚拟值初始化构建器类成员

如何解决如何在调用 cls.builder.param().build() 时使用虚拟值初始化构建器类成员

我需要在调用 .param() 时用一些虚拟值初始化我的构建器类成员

@Builder
public class MyQuery {
       private String param1;
       private String param1;
       private String param1;
       private String param1;
       ...
       private String param100;
}

当我像下面这样调用构建器类时,我希望它们用一些虚拟值(或空字符串)初始化,其余的应该为空。如果我使用 LOMBOK 构建器,它必须用一些值初始化为 .param1("some string")。是否有任何图书馆可以帮助我。

    MyQuery query = MyQuery.builder()
            .param1()
            .param2()
            .param3()
            .build();

无论我调用哪个参数,都应该有一些虚拟值(非空,也可以为空)。

解决方法

在浏览了 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;
            }
        }
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。