首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在抽象类上使用Lombok @SuperBuilder注释和toBuilder?

在抽象类上使用Lombok @SuperBuilder注释和toBuilder?
EN

Stack Overflow用户
提问于 2020-05-06 03:18:04
回答 2查看 3.7K关注 0票数 6

我有以下课程:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@SuperBuilder(toBuilder = true)
public abstract class Parent {
    //...
}

@SuperBuilder(toBuilder = true)
public class Child extends Parent {
    //...
}

@SuperBuilder(toBuilder = true)
public class Child2 extends Parent {
    //...
}

为什么我不能对抽象类( toBuilder() )的实例调用Parent,如下面的代码所示?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public copy(Parent parent) {
    parent.toBuilder().build();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-06 22:10:25

事实上,作为Hossein Nasr already explained,Lombok无法知道是否存在没有toBuilder=true的子类。

通过在抽象类上添加一个toBuilder方法,Lombok可以要求抽象类的所有直接子类也使用abstract toBuilder()。但是,可能存在子类不应该有toBuilder的用例(尽管我还没有看到任何好的例子)。此外,间接子类可能仍然缺乏toBuilder特性。因此,lombok不对抽象类的子类强制执行toBuilder

好消息是,通过手动将abstract toBuilder()方法添加到abstract class Parent中,您可以轻松地在您的情况下处理它(只有直接子类):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@SuperBuilder(toBuilder = true)
public abstract class Parent {
    public abstract ParentBuilder<?, ?> toBuilder();
}

通过此更改,您的copy方法将按预期的方式编译和工作。

如果您也有间接子类,则必须找到其他方法来确保它们也有@SuperBuilder(toBuilder = true)。如果没有这个注释,您可能会遇到奇怪的行为(例如,调用copy()将实例化一个不同的类)。

免责声明:我实现了@SuperBuilder特性。

票数 9
EN

Stack Overflow用户

发布于 2020-05-06 03:21:52

这可能是因为Lombok不能保证Parent的每个子类也被标记为@SuperBuilder(toBuilder=true),如果是的话,Lombok不能调用该实例的toBuilder

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61633821

复制
相关文章
SpringBoot系列之对Excel报表的校验提示
最近在做一个一对多excel类型的报表,如果excel报表数据填错了,要对其进行校验,然后返回给前端,做一个表格显示错误信息,excel报表数据读取的可以参考我上篇博客,链接
SmileNicky
2022/05/07
4080
SpringBoot系列之对Excel报表的校验提示
SpringBoot系列之MongoDB分页接口实现
spring-boot-starter-data-mongodb也有集成基于Spring Data的分页实现,但是习惯了用PageHelper,所以基于PageHelper集成一下mongodb,下面给出实现代码例子
SmileNicky
2022/12/01
2.1K0
SpringBoot系列之MongoDB分页接口实现
SpringBoot系列之基于MongoRepository实现分页
Spring Data MongoDB项目提供了与MongoDB文档数据库的集成。是Spring Data项目的一个分支。本博客基于Spring Data MongoDB实现,引入项目spring-boot-starter-data-mongodb实现MongoDB的分页,仅供参考
SmileNicky
2022/12/08
1.1K0
Lombok介绍和使用
Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量。
愷龍
2023/01/09
9070
Lombok介绍和使用
SpringBoot系列之自定义枚举类的数据校验注解
SpringBoot系列之自定义枚举类的数据校验注解 业务场景:数据校验,需要对枚举类型的数据传参,进行数据校验,不能随便传参。拓展,支持多个参数的枚举数据校验
SmileNicky
2021/12/17
3.1K1
SpringBoot系列之自定义枚举类的数据校验注解
lombok在IntelliJ IDEA下的使用
lombok是一款可以精减java代码、提升开发人员生产效率的辅助工具,利用注解在编译期自动生成setter/getter/toString()/constructor之类的代码。代码越少,意味着出bug的可能性越低。 官网地址:https://projectlombok.org/ 首页有一段几分钟的演示视频,看完就明白是怎么回事了。 先来二段对比代码: 这是用lombok后的java代码: import lombok.*; import lombok.extern.slf4j.Slf4j; import
菩提树下的杨过
2018/01/18
8890
lombok在IntelliJ IDEA下的使用
lombok在java项目中的使用
@NoArgsConstructor@RequiredArgsConstructor@AllArgsConstructor
jinjunzhu
2020/08/20
6210
lombok的@Builder注解原理背后干了啥?
@Builder可以放在类,构造器或方法上。虽然“基于类”和“基于构造器”模式是最常见的用例,但使用“方法”用例最容易解释。
JavaEdge
2021/02/23
2.6K0
lombok的@Builder注解原理背后干了啥?
Lombok使用
Lombok是一个简单的Java库,该工具可以通过注解自动地提供一些方法,简化开发。比如编写POJO时需要为每个属性提供getter()方法和setter()方法,这就可以使用Lombok实现。
SuperHeroes
2019/03/12
8730
Lombok使用
SpringBoot系列之集成MybatisPlus操作指南
MapperScan扫描具体的mapper包,就不需要每个mapper类都加@Mapper
SmileNicky
2022/01/04
8600
SpringBoot系列之集成MybatisPlus操作指南
@Builder不好用,试试@SuperBuilder
相信 Lombok 插件大家一定不会陌生,一个常用的注解是:@Builer, 它可以帮我们快速实现一个builder模式。以常见的商品模型为例:
Guide哥
2021/01/12
2.2K0
@Builder不好用,试试@SuperBuilder
优雅!Lombok 中 @Builder 妙用!
哈喽,我是狗哥。不知道大家有没有用过 Lombok?里面的 @Builder 注解使用的创建者模式又叫建造者模式。简单来说,就是一步步创建一个对象,它对用户屏蔽了里面构建的细节,但却可以精细地控制对象的构造过程。
JavaFish
2022/01/17
4.3K0
​在tinycolinux上安装和使用cloudwall
本文关键字:在tinycolinux上安装和使用cloudwall,同步器as webos,uniform native web appstack
minlearn
2020/09/28
7830
在 Linux 上安装和使用 Docker
由于 Ubuntu Server 16.04 缺少图形界面,我会完全通过命令行来安装和使用 Docker。在你安装前,你需要更新 apt 然后进行必要的升级。一定要注意,若系统内核升级了,你会需要重启系统。因此最好挑个服务器能重启的时间进行。
用户8989785
2021/09/10
1.9K0
在 Linux 上安装和使用 Docker
Docker 使得创建、部署,和管理容器变得特别简单。更好的是,安装和使用 Docker 在 Linux 平台上特别的方便。
用户4988085
2021/09/14
1.7K0
在OSX上安装和使用ROS
参考链接:https://github.com/mikepurvis/ros-install-osx
zhangrelay
2022/04/29
9720
在OSX上安装和使用ROS
Lombok介绍、使用方法和总结
1 Lombok背景介绍 官方介绍如下: Project Lombok makes java a spicier language by adding 'handlers' that know how to build and compile simple, boilerplate-free, not-quite-java code. 大致意思是Lombok通过增加一些“处理程序”,可以让java变得简洁、快速。 2 Lombok使用方法 Lombok能以简单的注解形式来简化java代码,提高开发人员的开发
猿人谷
2018/03/28
1.5K0
Lombok介绍、使用方法和总结
Idea 插件 lombok 的安装和使用
原文链接:https://www.cnblogs.com/lyosaki88/p/11046014.html
微风-- 轻许--
2019/08/14
1.2K0
Lombok使用记录
Lombok是一个Java包,可以通过注解的形式自动生成代码。通过使用lombok可以减少程序中许多样板代码,使程序更加清晰。
luoheng
2022/09/06
7650
抽象类的使用和作用
抽象类是一种特殊的类,生来就是作为父类的,具有抽象方法。那我们就来看一下代码,通过代码我们来学习抽象类的定义和使用。
罗罗攀
2021/07/28
8730
抽象类的使用和作用

相似问题

带有json注释的Lombok @SuperBuilder示例

20

如何在带有最终字段的抽象类上使用Lombok @SuperBuilder

24

如何在@SuperBuilder上使用龙目鱼的toBuilder

1106

Lombok @SuperBuilder在抽象类上的泛型原因错误:不兼容类型

17

带有最终字段的Spring抽象类和lombok's @SuperBuilder的继承

17
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文