java builder父类,解决Lombok父类与子类Builder不兼容
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不兼容相关推荐
- Java中父类的静态方法能否被子类重写?
Java中父类的静态方法能否被子类重写 前言 一.final关键字和static关键字介绍 二.问题产生及解决 1.错误结论 2.正确结论及验证 总结 前言 今天在复习final关键字的时候突发奇想, ...
- 解决重写父类的方法且不会影响继承的子类的问题
解决重写父类的方法且不会影响继承的子类的问题 基类的方法被所有继承的子类继承,是不应该被修改的,如果继承的子类重写了基类的方法,那么,再从这个子类派生出子类的话,这个派生的子类接口已经破坏掉了统一的接 ...
- java继承序列化_java中序列化之子类继承父类序列化
当一个父类实现Serializable接口后,他的子类都将自动的实现序列化. 以下验证了这一点: package Serial; import java.io.Serializable; public ...
- java继承父类执行顺序_java中子类继承父类程序执行顺序问题
Java中,new一个类的对象,类里面的静态代码块.非静态代码.无参构造方法.有参构造方法.类的一般方法等部分,它们的执行顺序相对来说比较简单,用程序也很容易验证.比如新建一个测试父类. public ...
- Java中的继承:父类和子类的关系
一.父类引用指向子类对象时 1.若子类覆盖了某方法,则父类引用调用子类重新定义的新方法 2.若子类未覆盖某方法,则父类引用调用父类本身的旧方法 3.若子类覆盖了某属性,但父类引用仍调用父类本身的旧属性 ...
- java如何调用父类的实例对象_java子类调用父类的方法中包含子类重写的实例方法...
java子类调用父类的方法中包含子类重写的实例方法 # 看题目是不是很绕,这个我也不知道怎么才能更简单的表达了 # 先看代码: public class Common { public static ...
- java多态实现示例,以及子类重写父类方法调用父类方法
多态 多态存在的三个必要条件:继承,重写,父类引用指向子类对象, 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则error:如果有,调用子类的同名方法. example: pack ...
- java父包引用_父类引用指向子类对象(java)
从对象的内存角度来理解试试. 假设现在有一个父类Father,它里面的变量需要占用1M内存.有一个它的子类Son,它里面的变量需要占用0.5M内存. 现在通过代码来看看内存的分配情况: Father ...
- java继承关系中,父类private修饰的内容真的不能被继承吗?NO
前情引入 关于java的继承,初学的时候,一直认为父类中private修饰的东西时无法被子类继承.后来随着学习的深入,见得多了一些,看到一些文章博客的另一种观点:其实父类中的东西,除了构造方法之外,其 ...
最新文章
- 自定义FragmentTabHost实现可控制是否保存fragment状态
- 思路+步骤+方法,三步教你如何快速构建用户画像?
- Android华容道之一步一步实现-2-图片分割
- 7个套路让妹子心甘情愿陪你看魔兽世界大电影
- EduCoder 机器学习 决策树
- Java学习 第四章 java面向对象(二)
- 移动平台自动化测试:appium(一)
- 返回CompletableFuture:Java 8功能亮点
- ajax 网络延迟 异步,利用 jQuery 的 Ajax 来实现检查网络延迟多少秒
- jquery判断页面标签是否存在
- 后台管理系统推荐(PHP)
- 边缘计算与移动边缘计算联系
- 计算机桌面美化软件,电脑桌面软件哪个好 桌面美化管理软件推荐
- 基本计算机编程术语,计算机编程术语,你记住了吗?
- 步进电机驱动技术1:基于TMC2660的步进电机驱动
- 阿里旺旺自动回复工具开发一
- Android stdio之 'adb' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
- 磁带储存拥有的4大优势
- AlexNet模型简介
- Linux内核及其发行版本