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

目录
  • 一.老规矩
  • 二.判断是否为相同问题(@Builder注解不能 build 父类属性)
  • 三.@SuperBuilder注解
    • 1. 概念(需要注意您的Lombok版本)
    • 2. 如何解决无法builder父类属性
    • 3. 遇到的一个小坑(Lombok1.18.2)
  • 四.总结

前言: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----->>>注意版本注意版本还是注意版本!!!

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

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

(0)

相关推荐

  • 解决Lombok注解不起作用的问题

    Lombok注解不起作用 场景: 减少实体类中如Getter,Setter方法的书写 原因: lombok是一个第三方插件,我们使用时需要进行两个步骤(两个步骤缺一不可): 1:引入lombok依赖 2: 安装lombok插件 作用: Lombok是一个第三方插件,通过它我们可以直接书写注解来代替原来的getter,setter,toString等方法. 深入理解Lombok 说道Lombok,可能会鲜为人知.但是在实际的开发中,它起到了很大的作用,话不多说,直入正题: 一.Lombok是什么

  • Lombok的@Data等注解无效的解决

    一.已定义好的实体类 二.调用时没有get,set访问器 在用@Data注解时,没有生成setter/getter方法.百度了一堆都没解决方法,后来用Google查了一下解决了~~~ 使用IDEA需要安装Lombok插件,我这里已经下载好,如果没下载安装点击install进行下载安装即可~~~ 到此这篇关于Lombok的@Data等注解无效的解决的文章就介绍到这了,更多相关Lombok的@Data注解无效内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

  • Lombok 的@StandardException注解解析

    目录 1. 引言 2. 什么是 @StandardException? 2.1. 添加 Lombok 依赖 2.2. 使用类注解 3. 优点 4. 缺点 5. 结论 1. 引言 在 Java 应用程序中,异常类对于正确捕获和处理错误至关重要.我们常常在编写异常处理的重复代码上花费时间,而不是关注应用程序的其他方面. 在本教程中,我们将使用 Lombok 的 @StandardException 注解自动生成异常类型类的构造函数.此外,我们还将了解其优缺点. 2. 什么是 @StandardExc

  • Lombok中@Builder和@SuperBuilder注解的用法案例

    目录 Lombok中@Builder和@SuperBuilder注解的用法 @Singular 注解修饰集合 @Builder.Default @SuperBuilder @SuperBuilder(toBuilder=true) PS:java Lombok下解决@Builder继承解决方法(@SuperBuilder) Lombok中@Builder和@SuperBuilder注解的用法 @Builder 是 lombok 中的注解.可以使用builder()构造的Person.Person

  • Lombok基本注解之@SneakyThrows的作用

    使用范围: 只能作用在方法和构造函数之上 @SneakyThrows注解的作用得从java的异常设计体系说起. java中常见的异常有两种: Exception即非运行时异常(编译异常). RuntimeException即运行时异常. 第一种会强制要求抛出它的方法声明throws,从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过.设计的目的是为了提醒开发者处理一些场景中必然可能存在的异常情况.比如网络异常造成IOException. 但是现实,往往事与愿违.大部分情况下的异

  • Java中lombok的@Builder注解的解析与简单使用详解

    Lombok中@Builder用法 1.建造者模式简介:Builder 使用创建者模式又叫建造者模式.简单来说,就是一步步创建一个对象,它对用户屏蔽了里面构建的细节,但却可以精细地控制对象的构造过程. 2.注解类Builder.java注释: * The builder annotation creates a so-called 'builder' aspect to the class that is annotated or the class  * that contains a mem

  • 解决Lombok使用@Builder无法build父类属性的问题

    目录 Lombok使用@Builder无法build父类属性 问题描述 解决方案 使用示例 lombok @Builder注解和build父类属性问题 1.简介 2.使用 3.@Builder注解对类做了什么? 4.优缺点 5.问题:@Builder注解不能 build 父类属性 Lombok使用@Builder无法build父类属性 问题描述 实体类使用Lombok的@Builder来实现Builder模式,但是如果使用了extend继承,则子类无法通过Builder来Build父类属性值 解

  • 升级IDEA后Lombok不能使用的解决方法

    今天到工作室比较晚,在电脑前吃着早饭,看到提示IDEA提示升级,寻思已经有好久没有升过级了.一样等着,就升级下吧. 升级完毕重启之后,突然发现好多错误,原来的应用也没法启动了.仔细一看报错信息,是由于Lombok相关的注解似乎都没有生效. 比如:用到@Slf4j的类里,会有类似这样的报错: java: 找不到符号 符号: 变量 log 位置: 类 com.didispace.UserService IDEA还提示,现在使用的编译器不支持lombok java: You aren't using

  • mybatis中使用InsertProvider注解报错解决全过程

    目录 使用InsertProvider注解报错解决 mybatis注解开发@InsertProvider Userprovider类 mapper的书写 使用InsertProvider注解报错解决 目前项目在使用mybatis,并且是使用注解的方式. 在使用InsertProvider注解的时候报了一下的错误: org.apache.ibatis.builder.BuilderException: Could not find value method on SQL annotation.  

  • lombok注解介绍小结

    lombok注解介绍 lombok注解文档 lombok官网下载 lombok是一个可以帮助我们简化java代码编写的工具类,尤其是简化javabean的编写,即通过采用注解的方式,消除代码中的构造方法,getter/setter等代码,使我们写的类更加简洁,当然,这带来的副作用就是不易阅读-不过,还是能看得懂吧,废话不多说,先看一下lombok支持的一些常见的注解. @NonNull @Cleanup @Getter/@Setter @ToString @EqualsAndHashCode @

  • javax NotBlank和Email注解失效的解决

    javax NotBlank和Email注解失效 使用javax的NotBlan和Email注解, 结果报类似错误 no validator could be found for constraint 'javax.validation.constraints.notblank' 原来是由于javax只提供了注解的定义,未提供对应的处理器,一般使用hibernate提供的注解处理器. 但是hibernate未提供NotBlank和Email注解的处理器(但是hibernate自己定义的NotBl

  • Java设计模式之代理模式与@Async异步注解失效的解决

    目录 JDK动态代理实现自定义异步注解(@Async) SpringAOP实现自定义异步注解 Spring的异步注解@Async失效分析 自定义注解实现方式 JDK动态代理实现自定义异步注解(@Async) 实现思路: 首先自定义一个注解,命名为:ExtAsync 实现一个接口,这个接口的实现类就是被代理类 实现jdk的InvocationHandler接口,根据反射获取目标方法的信息,判断是否有异步注解,如果有则另起一个线程异步执行去. 1.异步注解 @Target({ElementType.

  • 在Struts2中如何将父类属性序列化为JSON格式的解决方法

    项目前端由于采用Extjs4,列表分页需要返回三个参数:totalCount(记录总数).start(开始位置).limit(每页条数).由于项目中将有很多grid需要分页,因此想将分页信息放到单独的Action类里边,需要分页的Action直接继承该类即可.原struts.xml配置如下: 复制代码 代码如下: <package name="admin" namespace="/admin" extends="json-default"&

  • 解决form中action属性后面?传递参数 获取不到的问题

    如下所示: $p_id = $_REQUEST['p_id']; echo "<h1>您将更新商品编号为<span>$p_id</span>的商品信息 <a href='listproduct.php'>查看所有</a></h1> <form action='updateproduct.do.php?p_id=$p_id' method='get'> 商品名称:<input type='text' name

随机推荐