@UtilityClass
was introduced as an experimental feature in lombok v1.16.2.
Experimental because:
A utility class is a class that is just a namespace for functions. No instances of it can exist, and all its members
are static. For example, java.lang.Math
and java.util.Collections
are well known utility classes. This annotation automatically turns the annotated class into one.
A utility class cannot be instantiated. By marking your class with @UtilityClass
, lombok will automatically
generate a private constructor that throws an exception, flags as error any explicit constructors you add, and marks
the class final
. If the class is an inner class, the class is also marked static
.
All members of a utility class are automatically marked as static
. Even fields and inner classes.
There isn't currently any way to create non-static members, or to define your own constructor. If you want to instantiate
the utility class, even only as an internal implementation detail, @UtilityClass
cannot be used.