lombok 基础注解之 @RequiredArgsConstructor

这篇博客详细介绍了Lombok的@RequiredArgsConstructor注解,该注解用于自动生成包含final和@NonNull注解的成员变量的构造方法。文章包含了注解的作用、属性介绍、实战演练,特别指出如果没有final或@NonNull注解的成员变量,Lombok会生成一个无参构造方法,这可能造成误解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

一、注解介绍

作用于类,用于生成包含 final 和 @NonNull 注解的成员变量的构造方法

二、属性介绍
  • staticName:使生成的构造方法是私有的
    并且生成一个参数为 final 变量和 @NonNull 注解变量,返回类型为当前对象的静态方法,方法名为 staticName 值
  • access:设置构造方法的访问修饰符,如果设置了 staticName,那么将设置静态工厂方法的访问修饰符
    共有 PUBLIC、MODULE、PROTECTED、PACKAGE、PRIVATE、NONE
    MODULE 是 Java 9 的新特性,NONE 表示不生成构造方法也不生成静态方法,即停用注解功能
  • onConstructor:列出的所有注解都放在生成的构造方法上
    JDK 7 之前的写法是 onConstructor = @__({@Deprecated}),而 JDK 8 之后的写法是 onConstructor_ = {@Deprecated}
三、实战演练
@RequiredArgsConstructor(staticName = "newInstance", access = AccessLevel.PROTECTED, onConstructor_ = {@Deprecated})
public class ChengXiao {
	private String name;
	
	private final int age;
	
	@NonNull
	private String phone;
}
编译后
public class ChengXiao {
	private String name;
	
	private final int age;
	
  	@NonNull
  	private String phone;
	
  	@Deprecated
  	private ChengXiao(int age, @NonNull String phone) {
    	if (phone == null)
    		throw new NullPointerException("phone is marked non-null but is null");
    	this.age = age;
    	this.phone = phone;
    }
    
  	protected static ChengXiao newInstance(int age, @NonNull String phone) {
  		return new ChengXiao(age, phone);
  	}
}
四、温馨提示

当类中没有 final 和 @NonNull 注解的成员变量时会生成一个无参构造方法(因为没有符合要求的参数),而很多人认为 @Data 会生成无参构造方法就是此导致的

Lombok@RequiredArgsConstructor注解是用于生成一个包含被标注字段的构造方法的注解。该注解会在编译时自动生成带有被标注字段的构造方法。被@RequiredArgsConstructor注解标注的类中,所有使用final修饰的字段(以及被@NonNull注解修饰的字段)都会被包含在生成的构造方法中。而对于非final字段和非@NonNull注解修饰的字段,则不会被包含在生成的构造方法中。这样,使用@RequiredArgsConstructor注解可以方便地生成只包含特定字段的构造方法,减少了手动编写构造方法的工作量。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [vscode-lombok:Lombok注释Visual Studio Code的官方扩展](https://download.csdn.net/download/weixin_42133680/18328773)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [lombok 基础注解@RequiredArgsConstructor](https://blog.csdn.net/qq_39249094/article/details/121028234)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值