@RequiredArgsConstructor@AllArgsConstructorer二者之间的区别
时间: 2024-04-10 14:26:21 浏览: 93
@RequiredArgsConstructor和@AllArgsConstructor是Lombok库中的两个注解,用于自动生成构造函数。它们之间的区别如下[^2]:
- @RequiredArgsConstructor:该注解会生成一个包含所有非final和非static字段的构造函数。这意味着被标记的类中的每个字段都会在生成的构造函数中作为参数。这个注解对于需要依赖注入的类非常有用,因为它可以自动创建一个构造函数,以便在创建对象时注入所需的依赖项。
- @AllArgsConstructor:该注解会生成一个包含所有字段的构造函数,无论它们是final、static还是非final和非static。这意味着被标记的类中的每个字段都会在生成的构造函数中作为参数。这个注解对于需要在创建对象时传递所有字段的值的类非常有用。
下面是一个示例,演示了@RequiredArgsConstructor和@AllArgsConstructor的区别:
```java
import lombok.RequiredArgsConstructor;
import lombok.AllArgsConstructor;
@RequiredArgsConstructor
public class Person {
private final String name;
private final int age;
private String address;
// 自动生成的构造函数只包含name和age字段
}
@AllArgsConstructor
public class Person {
private final String name;
private final int age;
private String address;
// 自动生成的构造函数包含所有字段,包括name、age和address
}
```
阅读全文