Lombokを使用する別の方法は、@UtilityClass
注釈を使用することです。
@UtilityClass
ロンボクで実験的な機能として導入されましたv1.16.2
:
クラスに。という注釈が付けられている場合@UtilityClass
、次のことが起こります。
- ファイナルとマークされています。
- その中でコンストラクターが宣言されている場合、エラーが生成されます。
- それ以外の場合は、プライベートの引数なしコンストラクターが生成されます。をスローし
UnsupportedOperationException
ます。
- クラス内のすべてのメソッド、内部クラス、およびフィールドにはマークが付けられてい
static
ます。
概要:
ユーティリティクラスは、関数の単なる名前空間であるクラスです。そのインスタンスは存在できず、そのすべてのメンバーは静的です。たとえば、java.lang.Math
およびjava.util.Collections
はよく知られているユーティリティクラスです。
このアノテーションは、アノテーションが付けられたクラスを自動的に1つに変換します。
ユーティリティクラスをインスタンス化することはできません。
クラスをでマークすることにより@UtilityClass
、lombokは、例外をスローするプライベートコンストラクターを自動的に生成し、追加した明示的なコンストラクターにエラーのフラグを付け、クラスをfinalとしてマークします。
クラスが内部クラスの場合、そのクラスもstaticとマークされます。
ユーティリティクラスのすべてのメンバーは、自動的に静的としてマークされます。フィールドや内部クラスですら。
例:
import lombok.experimental.UtilityClass;
@UtilityClass
public class FilePathHelper {
private static String resourcesPath;
public static String getFilePath(HttpServletRequest request) {
if(resourcesPath == null) {
ServletContext context = request.getSession().getServletContext();
String serverpath = context.getRealPath("");
resourcesPath = serverpath + "/WEB-INF/classes/";
}
return resourcesPath;
}
}
公式ドキュメントからの参照: