lombok 子类中如何使用@Builder问题

在Lombok中,@Builder是一个非常方便的注解,它可以快速地生成Builder模式的代码,使代码变得更加优雅和简洁。但是,当我们在子类中使用@Builder时,可能会遇到一些困惑和问题。本文将详细讲解在Lombok子类中如何使用@Builder。

1. 使用@NoArgsConstructor注解

在子类中使用@Builder时,我们必须在父类中使用@NoArgsConstructor注解来生成一个无参的构造方法。因为在使用@Builder时,它会去调用父类的构造方法来生成实例对象。如果没有无参构造方法,就会导致编译错误。

import lombok.Builder;
import lombok.NoArgsConstructor;

@NoArgsConstructor
public class Parent {
    private String name;
}

public class Child extends Parent{
    @Builder
    public Child(String name) {
        setName(name);
    }
}

上面的代码中,我们在Parent类上添加了@NoArgsConstructor注解来生成一个无参构造方法。在Child类中,我们使用@Builder注解来生成Builder模式的代码。

2. 使用@SuperBuilder注解

另外,我们还可以使用@SuperBuilder注解来简化这个过程。@SuperBuilder注解是Lombok 1.18.2版本新增加的注解,可以自动生成调用父类构造方法的Builder构造方法。

import lombok.experimental.SuperBuilder;

@SuperBuilder
public class Parent {
    private String name;
}

public class Child extends Parent{
    private String age;

    public static void main(String[] args) {
        Child child = Child.builder()
                .name("Tom")
                .age("10")
                .build();
        System.out.println(child.getName() + ":" + child.getAge());
    }
}

上面的代码中,我们在Parent类上使用@SuperBuilder注解来生成Builder模式的代码,并且没有使用@NoArgsConstructor注解。在Child类中,我们直接继承Parent类,并添加一个age字段。在main方法中使用Child.builder()来生成Child对象。

总结

在Lombok子类中使用@Builder时,我们必须在父类上添加@NoArgsConstructor注解来生成一个无参构造方法,否则会导致编译错误。另外,我们还可以使用@SuperBuilder注解来简化这个过程,它可以自动生成调用父类构造方法的Builder构造方法,使代码变得更加简洁和优雅。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:lombok 子类中如何使用@Builder问题 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • ios12 beta4有哪些bug 苹果iOS12Beta4已知bug及解决方法汇总

    iOS12 Beta4 已知 bug 总结 自从 Apple 于 6 月 4 日发布 iOS12 Beta1 开始,一直轰轰烈烈的进行着 Beta 测试。而截至目前,iOS12 Beta 已经进入到 Beta4 版本,测试内容已经非常丰富。 不过,随着 Beta 版本的不断更新,Apple 在处理问题上也越发的高效。 以下是 iOS12 Beta4 已知 b…

    other 2023年6月27日
    00
  • ps怎么安装格式为exe的滤镜?

    安装格式为exe的滤镜通常需要以下步骤: 下载滤镜安装程序(exe文件):首先,你需要找到并下载你想要安装的滤镜的exe文件。通常,这个文件可以在滤镜的官方网站或其他可信的软件下载网站上找到。 双击运行安装程序:找到下载好的exe文件,双击运行它。这将启动滤镜的安装程序。 阅读并接受许可协议:在安装程序运行后,你可能会看到一个许可协议。请仔细阅读协议内容,并…

    other 2023年8月6日
    00
  • win7升级win10更新到99%蓝屏重启该怎么办?

    如果在升级Win7到Win10的过程中,系统更新到99%时出现蓝屏重启的情况,你可以尝试以下步骤解决问题: 1. 检查硬件兼容性 首先需要检查电脑硬件是否满足Win10的最低要求,因为不是所有的电脑都可以升级到Win10。如果硬件满足要求,则可以尝试重新进行升级。 2. 使用Windows 10安装媒介升级 可以尝试使用Windows 10官方安装媒介进行升…

    other 2023年6月27日
    00
  • jquery跟js初始化加载的多种方法及区别介绍

    针对题目“jquery跟js初始化加载的多种方法及区别介绍”的完整攻略,我准备了以下内容,并进行了分条详解。 一、jQuery和JS的初始化 1. jQuery的初始化 jQuery的初始化可以通过选择要操作的元素,然后在其中进行相关操作。例如: $(document).ready(function(){ //放置需要在DOM全部满足之后执行的代码 }); …

    other 2023年6月20日
    00
  • wps怎样取消首字自动大写? wps首字母大小写的详细教程

    要取消WPS的首字母自动大写功能,您可以按照以下步骤进行操作: 打开WPS软件并创建一个新的文档。 在菜单栏中选择“工具”选项。 在下拉菜单中选择“自动更正选项”。 在弹出的对话框中,选择“首字母大写自动更正”。 取消选中“首字母大写自动更正”选项。 单击“确定”按钮以保存更改。 以下是两个示例说明: 示例1:假设您在WPS中输入一个句子:“hello, w…

    other 2023年8月17日
    00
  • 关于javascript:隐藏浏览器的地址栏(弹出窗口)

    关于JavaScript:隐藏浏览器的地址栏(弹出窗口) 在Web开发中,有时需要隐藏浏览器的地址栏,以提供更好的用户体验。以下是关于JavaScript隐藏浏器地址栏的完整攻,包括两个示例说明。 步骤1:使用window.open()方法打开新窗口 要隐藏浏览器的栏,我们需要使用JavaScript的window.open()方法打开一个新窗口。以下是一个…

    other 2023年5月9日
    00
  • Android使用BroadcastReceiver监听网络连接状态的改变

    以下是使用BroadcastReceiver监听网络连接状态改变的完整攻略: 在AndroidManifest.xml文件中添加权限和声明BroadcastReceiver: <uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />…

    other 2023年10月14日
    00
  • Spring Boot分离配置文件的多种方式总结

    下面是Spring Boot分离配置文件的多种方式总结的详细攻略: 一、什么是Spring Boot分离配置文件? Spring Boot项目开发中,会有很多需要配置的参数和信息,如数据库的连接信息、端口号、日志级别等等。这些配置信息会在项目启动时进行加载,而在传统的开发中,这些配置信息通常放在一个名为application.properties的配置文件中…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部