@AllArgsConstructor用法
时间: 2024-01-13 19:20:20 浏览: 82
@AllArgsConstructor是一个Lombok注解,用于自动生成一个包含所有参数的构造函数。它可以用在类上,也可以用在字段上。
使用在类上时,@AllArgsConstructor会为类的所有非静态字段生成一个包含所有参数的构造函数。例如:
```java
@AllArgsConstructor
public class Person {
private String name;
private int age;
}
```
上述代码会自动生成以下构造函数:
```java
public Person(String name, int age) {
this.name = name;
this.age = age;
}
```
使用在字段上时,@AllArgsConstructor会为该字段生成一个包含该字段作为参数的构造函数。例如:
```java
public class Person {
@AllArgsConstructor
private String name;
private int age;
}
```
上述代码会自动生成以下构造函数:
```java
public Person(String name) {
this.name = name;
}
```
需要注意的是,如果类中已经存在一个构造函数,使用@AllArgsConstructor注解会覆盖原有的构造函数。
相关问题
@AllArgsConstructor作用和用法
`@AllArgsConstructor` 是一个 Lombok 注解,可以用于为类生成一个包含所有参数的构造函数。
使用 `@AllArgsConstructor` 注解时,Lombok 会自动为我们生成一个包含所有参数的构造函数,省去了我们手动编写这个构造函数的代码,从而使代码更简洁。
下面是一个使用 `@AllArgsConstructor` 注解的例子:
```java
import lombok.AllArgsConstructor;
@AllArgsConstructor
public class Person {
private String name;
private int age;
private String address;
}
```
在上面的例子中,`@AllArgsConstructor` 注解可以生成如下的构造函数:
```java
public Person(String name, int age, String address) {
this.name = name;
this.age = age;
this.address = address;
}
```
需要注意的是,`@AllArgsConstructor` 注解只能用于非 final 修饰的成员变量。如果某个成员变量被声明为 final,则该成员变量将不会被包含在生成的构造函数中。如果需要在构造函数中初始化 final 成员变量,可以使用 `@NonNull` 注解和 `@RequiredArgsConstructor` 注解。
@Getter @AllArgsConstructor
`@Getter` 和 `@AllArgsConstructor` 都是 Java 中的注解,它们通常用于简化访问器(getter methods)和构造函数的编写。
1. **@Getter**: 这个注解来自于 Lombok 框架,当它被添加到一个字段上时,Lombok 自动为该字段生成对应的 getter 方法。这意味着你无需手动编写如 `public String getName()` 的获取属性值的方法,只需要声明变量即可。
```java
private String name; // 使用 @Getter 后,等同于生成了 public String getName() 方法
```
2. **@AllArgsConstructor**: 也是一个 Lombok 注解,当你在一个类的所有字段上使用这个注解时,Lombok 就会自动生成一个包含所有字段默认值的无参构造器以及相应的 getters。这可以减少样板代码,提高效率。
```java
@AllArgsConstructor
class Person {
private String firstName;
private String lastName;
}
```
阅读全文