lombok 基礎注解之 @RequiredArgsConstructor


一、注解介紹
作用於類,用於生成包含 final 和 @NonNull 注解的成員變量的構造方法

二、屬性介紹
staticName:使生成的構造方法是私有的
並且生成一個參數為 final 變量和 @NonNull 注解變量,返回類型為當前對象的靜態方法,方法名為 staticName 值
access:設置構造方法的訪問修飾符,如果設置了 staticName,那么將設置靜態工廠方法的訪問修飾符
共有 PUBLIC、MODULE、PROTECTED、PACKAGE、PRIVATE、NONE
MODULE 是 Java 9 的新特性,NONE 表示不生成構造方法也不生成靜態方法,即停用注解功能
onConstructor:列出的所有注解都放在生成的構造方法上
JDK 7 之前的寫法是 onConstructor = @__({@Deprecated}),而 JDK 8 之后的寫法是 onConstructor_ = {@Deprecated}
三、實戰演練
@RequiredArgsConstructor(staticName = "newInstance", access = AccessLevel.PROTECTED, onConstructor_ = {@Deprecated})
public class 程瀟 {
private String name;

private final int age;

@NonNull
private String phone;
}
編譯后
public class 程瀟 {
private String name;

private final int age;

@NonNull
private String phone;

@Deprecated
private 程瀟(int age, @NonNull String phone) {
if (phone == null)
throw new NullPointerException("phone is marked non-null but is null");
this.age = age;
this.phone = phone;
}

protected static 程瀟 newInstance(int age, @NonNull String phone) {
return new 程瀟(age, phone);
}
}
四、溫馨提示
當類中沒有 final 和 @NonNull 注解的成員變量時會生成一個無參構造方法(因為沒有符合要求的參數),而很多人認為 @Data 會生成無參構造方法就是此導致的


免責聲明!

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



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