@FieldDefaults
21 世纪全新的默认字段修饰符。
@FieldDefaults 在 lombok v0.11.4 版本中作为实验性功能引入。
实验性
实验性是因为- 如果可以将此注解放在 package-info.java 包上,以便为该包中的所有类设置默认值,那就太好了。
- [2022-02-04 更新] 目前,只需在
lombok.config
文件中添加lombok.fieldDefaults.defaultPrivate = true
(或类似的defaultFinal
) 配置项,即可修改受该配置影响的每个源文件,即使该源文件内部完全没有 lombok 的任何痕迹。我们不太确定这是否是一个好主意。我们目前的观点是,这太魔法了,并且有一个替代方案:元注解。在至少元注解的想法被探索和放弃之前,此功能将不会离开当前的实验性状态。最有可能的是,如果它真的离开了实验性状态,则 需要lombok.FieldDefaults
注解,尽管你可以通过即将构建的元注解来设置它。
概述
@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 handlers 类似,任何名称以美元 ($
) 符号开头的字段都将被完全跳过。这样的字段将不会被修改。