SpringBoot - Lombok使用詳解3(@NoArgsConstructor、@AllArgsConstructor、@RequiredArgsConstructor)


五、Lombok 注解詳解(2)

5,@NoArgsConstructor

注解在類上,為類提供一個無參的構造方法。

  注意:

    • 當類中有 final 字段沒有被初始化時,編譯器會報錯,此時可用 @NoArgsConstructor(force = true),然后就會為沒有初始化的 final 字段設置默認值 0 / false / null。
    • 對於具有約束的字段(例如 @NonNull 字段),不會生成檢查或分配,因此請注意,正確初始化這些字段之前,這些約束無效。
// 使用注解
@NoArgsConstructor
public class Shape {
    private int x;
    @NonNull
    private double y;
    @NonNull
    private String name;
}
 
// 不使用注解
public class Shape {
    private int x;
    private double y;
    private String name;
 
    public Shape(){
    }
}

6,@AllArgsConstructor

(1)注解在類上,為類提供一個全參的構造方法。
(2)默認生成的方法是 public 的,如果要修改方法修飾符可以設置 AccessLevel 的值。
  • 例如:@Getter(access = AccessLevel.PROTECTED)
// 使用注解
@AllArgsConstructor(access = AccessLevel.PROTECTED)
public class Shape {
    private int x;
    @NonNull
    private double y;
    @NonNull
    private String name;
}
 
// 不使用注解
public class Shape {
    private int x;
    private double y;
    private String name;
 
    protected Shape(int x, double y, String name){
        this.x = x;
        this.y = y;
        this.name = name;
    }
}

7,@RequiredArgsConstructor

(1)注解在類上,會生成構造方法(可能帶參數也可能不帶參數)。
  注意:如果帶參數,這參數只能是以 final 修飾的未經初始化的字段或者是以 @NonNull 注解的未經初始化的字段。
 
(2)該注解還可以用 @RequiredArgsConstructor(staticName="methodName") 的形式生成一個指定名稱的靜態方法,返回一個調用相應的構造方法產生的對象
// 使用注解
@RequiredArgsConstructor(staticName = "hangge")
public class Shape {
    private int x;
    @NonNull
    private double y;
    @NonNull
    private String name;
}
 
// 不使用注解
public class Shape {
    private int x;
    private double y;
    private String name;
 
    public Shape(double y, String name){
        this.y = y;
        this.name = name;
    }
 
    public static Shape hangge(double y, String name){
        return new Shape(y, name);
    }
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM