添加@NoArgsConstructor 注释会导致错误
Adding @NoArgsConstructor anotationg causes error
我有一个 Student class 需要一个默认构造函数,我想用 @NoArgsConstructor 注释添加它问题是当我添加它时我的所有变量都会给出错误“Variable 'xxx' 可能尚未初始化
这是class
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.UUID;
@Getter
@NoArgsConstructor
@Entity
public class Student {
private final UUID studentId;
private final String firstName;
private final String lastName;
private final String email;
private final Gender gender;
public Student(
@JsonProperty("studentId") UUID studentId
, @JsonProperty("firstName")String firstName
, @JsonProperty("lastName")String lastName
, @JsonProperty("email")String email
,@JsonProperty("gender") Gender gender) {
this.studentId = studentId;
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.gender = gender;
}
@Override
public String toString() {
return "Student{" +
"studentId=" + studentId +
", firstName='" + firstName + '\'' +
", lastName='" + lastName + '\'' +
", email='" + email + '\'' +
", gender=" + gender +
'}';
}
enum Gender{
MALE,FEMALE,male,female
}
}
您 class 中的所有字段都是 final
并且 预计会在创建对象实例时初始化 而不会更改。当您使用 @NoArgsConstructor
时,您正在创建一个构造函数,该构造函数可用于创建对象 而无需初始化值 。如果你想创建一个没有值的对象,你可以删除 final 关键字,如下所示:
private UUID studentId;
private String firstName;
private String lastName;
private String email;
private Gender gender;
如果您希望在对象创建期间分配值,请删除 @NoArgsConstructor
。
我有一个 Student class 需要一个默认构造函数,我想用 @NoArgsConstructor 注释添加它问题是当我添加它时我的所有变量都会给出错误“Variable 'xxx' 可能尚未初始化
这是class
import lombok.Getter;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.UUID;
@Getter
@NoArgsConstructor
@Entity
public class Student {
private final UUID studentId;
private final String firstName;
private final String lastName;
private final String email;
private final Gender gender;
public Student(
@JsonProperty("studentId") UUID studentId
, @JsonProperty("firstName")String firstName
, @JsonProperty("lastName")String lastName
, @JsonProperty("email")String email
,@JsonProperty("gender") Gender gender) {
this.studentId = studentId;
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.gender = gender;
}
@Override
public String toString() {
return "Student{" +
"studentId=" + studentId +
", firstName='" + firstName + '\'' +
", lastName='" + lastName + '\'' +
", email='" + email + '\'' +
", gender=" + gender +
'}';
}
enum Gender{
MALE,FEMALE,male,female
}
}
您 class 中的所有字段都是 final
并且 预计会在创建对象实例时初始化 而不会更改。当您使用 @NoArgsConstructor
时,您正在创建一个构造函数,该构造函数可用于创建对象 而无需初始化值 。如果你想创建一个没有值的对象,你可以删除 final 关键字,如下所示:
private UUID studentId;
private String firstName;
private String lastName;
private String email;
private Gender gender;
如果您希望在对象创建期间分配值,请删除 @NoArgsConstructor
。