lombok 实验性注解之 @SuperBuilder

33 篇文章 11 订阅

最全的 lombok 注解详情(随着版本不定时更新)

一、注解介绍

@Builder 并不支持对基类成员属性的构造,而 @SuperBuilder 就是为了解决这个问题而产生的,算是 @Builder 的升级版

二、属性介绍
  • builderMethodName:创建内部静态类的方法名,默认值为 builder
  • buildMethodName:创建实体类的方法名,默认值为 build
  • toBuilder:设置为 true 可以对这个对象进行拷贝生成新的对象,可以再修改,默认为 false
  • setterPrefix:setter 方法的前缀
三、实战演练

@Builder

public class XuXiaoHan {
    private Integer age;
    
    private String name;
}

@Builder
public class ChenYao extends XuXiaoHan {
	public static void main(String[] args) {
		ChenYao.builder().name("陈瑶").build(); // 这个时候是不能对基类的 name 属性赋值
	}
}

@SuperBuilder

@SuperBuilder(builderMethodName = "builder", buildMethodName = "build", toBuilder = true, setterPrefix = "k")
public class XuXiaoHan {
    private Integer age;
    private String name;
}

@SuperBuilder
public class ChenYao extends XuXiaoHan {
	public static void main(String[] args) {
		ChenYao.builder().kName("陈瑶").build();
	}
}
四、温馨提示

一、基类和派生类不能同时存在 @Builder
二、如果基类使用了 @SuperBuilder,那么派生类必须存在 @SuperBuilder 或者写出参数为:基类Builder<?, ?> 的构造方法
三、@SuperBuilder 并不像 @Builder 功能那么多,比如非 final 字段设置默认值,@SuperBuilder 并不支持

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@SuperBuilder是一个注解,用于简化Java类的构建过程。它是基于Lombok库的一个功能,提供了一种更方便的方法来构建类,特别是在存在继承关系的类中。 使用@SuperBuilder注解时,需要注意以下几点: 1. 基类和派生类不能同时存在@Builder注解。如果基类使用了@SuperBuilder注解,那么派生类必须要有@SuperBuilder注解或者提供一个构造方法,参数为基类Builder<?, ?>。 2. @SuperBuilder注解并不支持像@Builder注解那样,对非final字段设置默认值。 3. 使用@SuperBuilder注解时,可以使用builderMethodName属性来指定创建内部静态类的方法名,默认值为"builder";使用buildMethodName属性来指定创建实体类的方法名,默认值为"build";使用toBuilder属性设置为true可以对对象进行拷贝生成新的对象并进行修改,默认值为false;使用setterPrefix属性来指定setter方法的前缀。 以下是一个使用@SuperBuilder注解的例子: ```java @SuperBuilder public class XuXiaoHan { private Integer age; private String name; } @SuperBuilder public class ChenYao extends XuXiaoHan { public static void main(String[] args) { ChenYao.builder().name("陈瑶").build(); } } ``` 在这个例子中,XuXiaoHan类和ChenYao类都使用了@SuperBuilder注解。XuXiaoHan类和ChenYao类都可以使用builder()方法来创建对象,并可以链式地设置属性值。在ChenYao类的main方法中,我们可以看到如何使用@SuperBuilder注解来创建ChenYao对象,并设置name属性的值为"陈瑶"。 总之,@SuperBuilder注解是用来简化Java类的构建过程的,特别适用于存在继承关系的类。它提供了一种更方便的方法来创建对象并设置属性值。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值