添加@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