返回顶部
首页 > 资讯 > 后端开发 > Python >Lombok注解之@SuperBuilder--解决无法builder父类属性问题
  • 929
分享到

Lombok注解之@SuperBuilder--解决无法builder父类属性问题

2024-04-02 19:04:59 929人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录一.老规矩二.判断是否为相同问题(@Builder注解不能 build 父类属性)三.@SuperBuilder注解1. 概念(需要注意您的Lombok版本)2. 如何解决无法b

前言:Lombok的小坑之 @Builder注解不能 build 父类属性

正文在第三个目录下,学习@SuperBuilder注解的话可以直接根据目录跳到正文所在

一.老规矩

先上文档官方文档链接@SuperBuilder

二.判断是否为相同问题(@Builder注解不能 build 父类属性)

前提情况判断

首先是父类和子类的代码情况这里直接附图

会出现的基本常见(最常见问题)无法builder父类属性

我们会看到这里面提示: 无法解析“SonObjectBuilder”中的方法“age”

三.@SuperBuilder注解

1. 概念(需要注意您的Lombok版本)

  • @SuperBuilder在 lombok v1.18.2 中作为实验性功能引入
  • @SuperBuildertoBuilder`lombok v1.18.4 添加了对自定义 的功能和有限支持
  • @SuperBuilderlombok v1.18.14 扩展了定制的可能性

2. 如何解决无法builder父类属性

官网给出的方法

@SuperBuilder注释为您的类生成复杂的构建器 api 。与 相比@Builder,@SuperBuilder也适用于超类中的字段。但是,它仅适用于类型。最重要的是,它要求所有超类也有@SuperBuilder注释。

code这里依旧使用图片来做对比展示

结果

不再提示: 无法解析“SonObjectBuilder”中的方法“age”解决问题!!!

3. 遇到的一个小坑(Lombok1.18.2)

  • 这里只是简单的处理了Builder注解没有办法builder属性的问题
  • 如果父子类都是您新建的那么问题不是很大
  • 但是有一种可能就是父类已经存在很久了,所以请检查一下原本的父类在被@Builder修饰的时候有没有在某一个参数上使用了@Builder.Default

前提条件依旧图片展示

首先展示的是父子类

其次是builder代码如下

我们可以发现emmmmmm,貌似idea并没有提示什么,但是当我们进行编译的时候就会发现(!!!)

我们找到是对应的第14行代码

处理方法删除子类的无参构造注解和父类的无参全参两个注解如下图

再次运行问题解决!!!(全体起立!)

对于1.18.10以上的版本此问题已经被解决, 即@Builder.Default可以与@SuperBuilder在无参和全参构造注解的情况下使用

至于1.8.2至1.8.10之间版本本人没有具体测试过,所以需要看情况进行使用

四.总结

对于lombok的@SuperBuilder----->>>注意版本注意版本还是注意版本!!!

其他功能这里暂时不做赘述,可以自己根据官网文档进行尝试,(以后可能更新)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Lombok注解之@SuperBuilder--解决无法builder父类属性问题

本文链接: https://lsjlt.com/news/168066.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作