@FieldDefaults
21 世紀全新的預設欄位修飾詞。
@FieldDefaults 在 lombok v0.11.4 版本中以實驗性質功能推出。
實驗性質
實驗性質的原因- 若能將此功能放在 package-info.java 套件中,以便為該套件中的所有類別設定預設值,那就太好了。
- [2022-02-04 更新] 目前,只需在
lombok.config
條目中加入lombok.fieldDefaults.defaultPrivate = true
(或類似的defaultFinal
),就足以修改受該設定影響的每個原始碼檔案,即使該原始碼檔案內部完全沒有任何 lombok 的蹤跡。我們不太確定這是否是個好主意。我們目前的觀點是,這有點太過於魔法了,而且還有一個替代方案:meta-annotations(元註解)。在至少 meta-annotations 的想法被探索和捨棄之前,此功能將不會脫離目前的實驗性質狀態。最有可能的是,如果它真的脫離了實驗性質,則會需要lombok.FieldDefaults
註解,不過,您可以透過即將建置的 meta-annotation 來設定它。
概觀
@FieldDefaults
註解可以為帶註解的類別或列舉中的每個欄位新增存取修飾詞 (public
、private
或 protected
)。它也可以為帶註解的類別或列舉中的每個欄位新增 final
。
若要為每個(實例)欄位新增 final
,請使用 @FieldDefaults(makeFinal=true)
。任何必須保持非 final 的非 final 欄位都可以使用 @NonFinal
註解(也在 lombok.experimental
套件中)。
若要為每個(實例)欄位新增存取修飾詞,請使用 @FieldDefaults(level=AccessLevel.PRIVATE)
。任何尚未具有存取修飾詞的欄位(即任何看起來像套件私有存取的欄位)都會變更為具有適當的存取修飾詞。任何必須保持套件私有的套件私有欄位都可以使用 @PackagePrivate
註解(也在 lombok.experimental
套件中)。
使用 Lombok
import lombok.AccessLevel;
|
原生 Java
public class FieldDefaultsExample {
|
支援的配置鍵
-
lombok.fieldDefaults.flagUsage
= [warning
|error
] (預設值:未設定) - 如果已配置,Lombok 將會把任何
@FieldDefaults
的使用標記為警告或錯誤。 -
lombok.fieldDefaults.defaultPrivate
= [true
|false
] (預設值:false) - (自 1.16.8 版本起) 若設為
true
,則在編譯來源中的每個類別或列舉中的每個欄位都會被標記為private
,除非它具有明確的存取修飾詞或@PackagePrivate
註解,或者存在明確的@FieldDefaults
註解來覆寫此配置鍵。 -
lombok.fieldDefaults.defaultFinal
= [true
|false
] (預設值:false) - (自 1.16.8 版本起) 若設為
true
,則在編譯來源中的每個類別或列舉中的每個欄位都會被標記為final
,除非它具有@NonFinal
註解,或者存在明確的@FieldDefaults
註解來覆寫此配置鍵。
小字聲明
與其他處理欄位的 lombok 處理器一樣,任何名稱以錢字號 ($
) 符號開頭的欄位都會完全略過。這類欄位將完全不會被修改。