Lombok中@Builder存在默认值的坑
915
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
Lombok中@Builder存在默认值的坑
本文介绍了在使用Lombok中@Builder注解时,遇到的默认值问题及其解决方法。通过分析问题现象和两种解决方案,帮助开发者更好地理解和选择适合项目的实现方式。
1. 默认值存在问题
在一个带有@Builder注解的Java Bean中,属性赋予默认值后,使用build方式构建对象时该属性的值为null。测试用例验证了这一现象,输出结果显示默认值未被赋予。
例如,Student类的name属性被赋默认值“张三”,但通过builder方法构建对象时,name的值仍为null。
2. 解决方案
2.1. 使用 @Builder.Default
解决问题的一个方法是在默认值字段上添加@Builder.Default注解。这样可以确保该字段在构建器生成对象时赋予默认值,输出结果验证了这一方案的有效性。
然而,这种方法在字段较多的情况下可能显得繁琐,同时需要注意在Lombok官方1.18.4版本之前,new出来的对象中无法使用默认值。
2.2. 使用 toBuilder
另一种解决方案是启用toBuilder功能,通过在@Builder注解中设置toBuilder参数,可以从原始类的实例生成构建器实例。这种方法无需为每个字段添加@Builder.Default注解,但需要先实例化类并修改测试代码。
测试结果显示,使用toBuilder后对象的默认值能够正确赋予。这种方法适用于需要更加简洁的代码场景。
总结
本文探讨了Lombok中@Builder注解存在默认值问题的两种解决方案。在实际项目中,选择适合的方案需要根据字段数量、代码简洁性以及Lombok版本等情况综合考虑。
若本文内容对您有帮助,欢迎关注、点赞、收藏或转发分享,您的支持是创作的动力!
springboot葵花宝典
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
白皮书上线