@UtilityClass
Utility, metility, wetility! 大众的实用工具类。
@UtilityClass
在 lombok v1.16.2 中作为实验性功能引入。
实验性
实验性是因为- 关于它是否足够常见以被视为样板代码存在一些争议。
- 由于 javac 的限制,目前非星号静态导入不能用于从
@UtilityClass
类导入内容;请勿使用静态导入,或使用星号导入。
概述
实用工具类是一个仅作为函数命名空间的类。它不能被实例化,并且所有成员都是静态的。例如,java.lang.Math
和 java.util.Collections
是著名的实用工具类。此注解自动将注解的类转换为实用工具类。
实用工具类不能被实例化。通过使用 @UtilityClass
注解标记你的类,lombok 将自动生成一个抛出异常的私有构造函数,将你添加的任何显式构造函数标记为错误,并将类标记为 final
。如果该类是内部类,则该类也会被标记为 static
。
实用工具类的所有成员都会自动标记为 static
。甚至包括字段和内部类。
使用 Lombok
import lombok.experimental.UtilityClass;
|
原始 Java
public final class UtilityClassExample {
|
支持的配置键
-
lombok.utilityClass.flagUsage
= [warning
|error
] (默认值:未设置) - 如果配置,Lombok 将把任何
@UtilityClass
的使用标记为警告或错误。
小字声明
目前没有任何方法可以创建非静态成员,或者定义你自己的构造函数。如果你想实例化实用工具类,即使只是作为内部实现细节,也不能使用 @UtilityClass
。
由于 javac 处理静态导入的特殊方式,尝试对 @UtilityClass
的任何成员进行非星号静态导入都将不起作用。要么使用星号静态导入:import static TypeMarkedWithUtilityClass.*;
,要么不要静态导入任何成员。