Lombok 是我们经常使用的插件,@Builder也是我们经常使用的注解,那你有没有遇见过如下错误呢?

父类与子类 Builder不兼容场景

Error:(16, 1) java: com.jdcloud.jdsf.demo.consumer.domain.ChildModel 中的 builder() 无法隐藏 com.jdcloud.jdsf.demo.consumer.domain.ParentModel 中的 builder()

返回类型com.jdcloud.jdsf.demo.consumer.domain.ChildModel.ChildModelBuilder与com.jdcloud.jdsf.demo.consumer.domain.ParentModel.ParentModelBuilder不兼容

解决方案

不要将子类的@builder 加载类上,单独写一个需要builder 的构造函数,加载构造函数上,并对子类builder 进行单独命名,同时使用时,也需要使用子类指定的builder。 请见如下代码:

父类使用buidler

package com.jdcloud.jdsf.demo.consumer.domain;

import lombok.*;

/**

* 测试 Lombok, 父类

* @author wangyushuai2@jd.com

* @date 2020/5/24

*/

@Data

@AllArgsConstructor

@NoArgsConstructor

@Builder

public class ParentModel {

private String parentProp1;

}

子类使用builder

注意 单独命名 childBuilder, 使用的时候,也是用 chilerBuilder 进行构建

package com.jdcloud.jdsf.demo.consumer.domain;

import lombok.*;

/**

* Lombok 子类

* @author wangyushuai2@jd.com

* @date 2020/5/24

*/

@Data

@NoArgsConstructor

@EqualsAndHashCode(callSuper = true)

@ToString(callSuper = true)// toString时,将也打印父类的属性,默认时false 的

public class ChildModel extends ParentModel {

private String childProp1;

@Builder(builderMethodName = "chilerBuilder")

public ChildModel(String parentProp1, String childProp1) {

super(parentProp1);

this.childProp1 = childProp1;

}

}

例子

package com.jdcloud.jdsf.demo.consumer.domain;

import lombok.extern.slf4j.Slf4j;

/**

* lombok demo

* @author wangyushuai2@jd.com

* @date 2020/5/24

*/

@Slf4j

public class TestLombokServiceImpl {

public static void main(String[] args) {

ChildModel model = ChildModel.chilerBuilder().childProp1("child").parentProp1("parent").build();

log.info("{}",model);

}

}

推荐文档

lombok 常用注解

java builder父类,解决Lombok父类与子类Builder不兼容相关推荐

  1. Java中父类的静态方法能否被子类重写?

    Java中父类的静态方法能否被子类重写 前言 一.final关键字和static关键字介绍 二.问题产生及解决 1.错误结论 2.正确结论及验证 总结 前言 今天在复习final关键字的时候突发奇想, ...

  2. 解决重写父类的方法且不会影响继承的子类的问题

    解决重写父类的方法且不会影响继承的子类的问题 基类的方法被所有继承的子类继承,是不应该被修改的,如果继承的子类重写了基类的方法,那么,再从这个子类派生出子类的话,这个派生的子类接口已经破坏掉了统一的接 ...

  3. java继承序列化_java中序列化之子类继承父类序列化

    当一个父类实现Serializable接口后,他的子类都将自动的实现序列化. 以下验证了这一点: package Serial; import java.io.Serializable; public ...

  4. java继承父类执行顺序_java中子类继承父类程序执行顺序问题

    Java中,new一个类的对象,类里面的静态代码块.非静态代码.无参构造方法.有参构造方法.类的一般方法等部分,它们的执行顺序相对来说比较简单,用程序也很容易验证.比如新建一个测试父类. public ...

  5. Java中的继承:父类和子类的关系

    一.父类引用指向子类对象时 1.若子类覆盖了某方法,则父类引用调用子类重新定义的新方法 2.若子类未覆盖某方法,则父类引用调用父类本身的旧方法 3.若子类覆盖了某属性,但父类引用仍调用父类本身的旧属性 ...

  6. java如何调用父类的实例对象_java子类调用父类的方法中包含子类重写的实例方法...

    java子类调用父类的方法中包含子类重写的实例方法 # 看题目是不是很绕,这个我也不知道怎么才能更简单的表达了 # 先看代码: public class Common { public static ...

  7. java多态实现示例,以及子类重写父类方法调用父类方法

    多态 多态存在的三个必要条件:继承,重写,父类引用指向子类对象, 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则error:如果有,调用子类的同名方法. example: pack ...

  8. java父包引用_父类引用指向子类对象(java)

    从对象的内存角度来理解试试. 假设现在有一个父类Father,它里面的变量需要占用1M内存.有一个它的子类Son,它里面的变量需要占用0.5M内存. 现在通过代码来看看内存的分配情况: Father ...

  9. java继承关系中,父类private修饰的内容真的不能被继承吗?NO

    前情引入 关于java的继承,初学的时候,一直认为父类中private修饰的东西时无法被子类继承.后来随着学习的深入,见得多了一些,看到一些文章博客的另一种观点:其实父类中的东西,除了构造方法之外,其 ...

最新文章

  1. 自定义FragmentTabHost实现可控制是否保存fragment状态
  2. 思路+步骤+方法,三步教你如何快速构建用户画像?
  3. Android华容道之一步一步实现-2-图片分割
  4. 7个套路让妹子心甘情愿陪你看魔兽世界大电影
  5. EduCoder 机器学习 决策树
  6. Java学习 第四章 java面向对象(二)
  7. 移动平台自动化测试:appium(一)
  8. 返回CompletableFuture:Java 8功能亮点
  9. ajax 网络延迟 异步,利用 jQuery 的 Ajax 来实现检查网络延迟多少秒
  10. jquery判断页面标签是否存在
  11. 后台管理系统推荐(PHP)
  12. 边缘计算与移动边缘计算联系
  13. 计算机桌面美化软件,电脑桌面软件哪个好 桌面美化管理软件推荐
  14. 基本计算机编程术语,计算机编程术语,你记住了吗?
  15. 步进电机驱动技术1:基于TMC2660的步进电机驱动
  16. 阿里旺旺自动回复工具开发一
  17. Android stdio之 'adb' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  18. 磁带储存拥有的4大优势
  19. AlexNet模型简介
  20. Linux内核及其发行版本

热门文章

  1. word拼写检查自定义词典下载_使用自定义词典进行拼写检查
  2. 服务器如何修改bios密码,服务器进去bios设置密码
  3. jvm gc 算法分析
  4. 模拟退火算法与遗传算法求解多目标优化问题的算法实现(数学建模)
  5. 自动化运维--Python在大型网络管理中的应用案例
  6. 转:模糊的雅黑字体及解决方法
  7. solidity智能合约:二手交易平台合约
  8. Linux云计算命令大全
  9. bootstrap-table的使用(3)--自定义搜索功能,数据库查询一个时间段内的内容并显示为例
  10. 带您一键了解什么是海量存储、企业云盘