lombok的使用@Data、@Slf4j、@Builder

本文介绍如何在IDEA中集成Lombok插件,通过在pom.xml中添加依赖和使用@Data、@Getter、@Setter等注解,自动生成get、set方法及构造器,提高Java开发效率。

maven集成

先要确保idea已经继承lombok插件,如果没有集成,那么是无效的。
pom.xml中添加代码:

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.16.22</version>
	<scope>provided</scope>
</dependency>

@Data、@Getter、@Setter

java类中添加:

@Getter
@Setter

或者加@Data注解,那么会自动生成get,set和toString等方法,以及无参构造器。
但是需要注意一点,如果有有参构造器,无参构造器需要显式声明。

@Slf4j注解实现不用写log

类上加这个注解,直接使用log。

@Builder和@Builder.Default

这其实就是建造模式。
加了这个注解,代码的方式还优雅些,支持链式操作。

User.builder().type("1").build();

但是这样会有一个问题,如果字段有默认值,那么build后会丢失

解决方案,使用@Builder.Default注解,该注解是加在属性上的。
代码:

@Builder.Default
private String type="1";
报黄 @Builder.Default requires an initializing expression (’ = something;').

是@Builder和@Builder.Default同时使用时报这个错。
报黄应该是不用管的。

@Builder和new冲突吗

@Builder和new并不冲突,但使用@Builder注解后,默认的无参构造函数会失效‌。当你在类上使用@Builder注解时,Lombok会为该类生成一个全参数构造函数,这个构造函数用于通过建造者模式创建对象。由于默认的无参构造函数(@NoArgsConstructor)会与@Builder冲突,因此默认的无参构造函数将不再生成。为了能够通过new关键字创建对象,你可以在类上同时使用@NoArgsConstructor和@AllArgsConstructor注解。这样,Lombok会生成无参构造函数和全参构造函数,从而解决冲突问题‌。

@Builder报错 com.User builder()无法覆盖com.Person中的builder()

一般出现在子类继承父类时。

解决方案:
1、父类指定注解名,避免冲突,如@Builder(builderClassName = “PcUploadRequestBuilder”)。
2、子类使用@SuperBuilder

但是好像还是报错,Builder不带有参数(大概是这么个报错)。

有继承关系的类@Data会有问题

例如两个类都加是有问题的。

解决方案:
1、被继承类加@Data,继承类手动生成get、set方法。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值