@NoArgsConstructor @AllArgsConstructor
时间: 2023-10-19 20:34:32 浏览: 60
@NoArgsConstructor和@AllArgsConstructor是Lombok库中的两个注解,用于自动生成类的构造方法。
@NoArgsConstructor注解会自动生成一个无参的构造方法,可以用于创建对象时不需要传入任何参数。这个注解常用于需要使用无参构造方法实例化对象的场景。
@AllArgsConstructor注解会自动生成一个包含所有字段作为参数的构造方法,可以用于创建对象时传入所有字段的值。这个注解常用于需要在实例化对象时一次性传入全部字段的场景。
下面是一个使用@AllArgsConstructor注解的例子:
```java
@Component
@AllArgsConstructor
public class ConstructorDemo {
private BeanTest1 beanTest1;
@NonNull private BeanTest2 beanTest2;
private BeanTest3 beanTest3;
@Value("${constructor.name:hello}")
private String name;
}
```
在这个例子中,构造方法会接收BeanTest1、BeanTest2、BeanTest3和name作为参数,并将它们赋值给对应的字段。注意,由于@BeanTest2被@NonNull修饰,所以它必须在构造方法中传入一个非null的值,否则会抛出NullPointerException异常。
另外,还有一个注解@RequiredArgsConstructor,它与@AllArgsConstructor类似,也会生成一个包含被final修饰或者@NonNull修饰的字段作为参数的构造方法。它的作用是确保这些字段在实例化对象时都必须被传入值。
总结起来,@NoArgsConstructor用于生成无参构造方法,@AllArgsConstructor用于生成包含所有字段的构造方法,@RequiredArgsConstructor用于生成包含被final修饰或者@NonNull修饰的字段的构造方法。这些注解可以简化代码,提高开发效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [@NoArgsConstructor、@AllArgsConstructor、@RequiredArgsConstructor的区别以及在springboot常用地方](https://blog.csdn.net/xueyijin/article/details/124618309)[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_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]