lombok @Builder 是如何实现的

lombok 可能大家都用过,有一个 @Builder 注解可以很方便的在对象初始化的时候填充属性值,不用大量的调用 setter 方法,代码更易于阅读与编写。不知道大家有没有想过 @Builder 注解内部是怎么实现的,前些天看 《Effective Java》 的时候刚好看到有一个例子,其实很简单,这里以一个例子分享下代码实现。

定义 Builder 接口,用于 build 对象:

public interface Builder<T> {

    T build();
}

定义 bean:

public class UserFacts {

    private String name;

    private Integer age;

    public static UserFactsBuilder builder() {
        return new UserFactsBuilder();
    }

    public static class UserFactsBuilder implements Builder<UserFacts> {

        private String name;

        private Integer age = 0;

        public UserFactsBuilder name(String name) {
            this.name = name;
            return this;
        }

        public UserFactsBuilder age(Integer age) {
            this.age = age;
            return this;
        }

        @Override
        public UserFacts build() {
            return new UserFacts(this);
        }
    }

    private UserFacts(UserFactsBuilder builder) {
        this.name = builder.name;
        this.age = builder.age;
    }
}

定义测试类:

    public static void main(String[] args) {
        UserFacts userFacts = UserFacts.builder()
                .name("zchen")
                .age(18)
                .build();

        System.out.println(userFacts.name);
    }

这种 build 模式的代码显得很简洁,你需要哪个参数直接 build 即可,比构造器要方便的多。这里只是简单地分享一下,业务代码写久了,没事了解些其他比较好的代码格式或者业务架构模型还是挺有意思的的。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值