Sonar で次の警告が表示されます:
ユーティリティクラスコンストラクターを非表示:
ユーティリティクラスにはパブリックまたはデフォルトのコンストラクタは不要です
私のクラス:
public class FilePathHelper {
private static String resourcesPath;
public static String getFilePath(HttpServletRequest request) {
if(resourcesPath == null) {
String serverpath = request.getSession()
.getServletContext()
.getRealPath("");
resourcesPath = serverpath + "/WEB-INF/classes/";
}
return resourcesPath;
}
}
これを取り除く解決策が欲しい警告の上ソナーキューブ。
ベストアンサー1
このクラスが単なるユーティリティ クラスである場合は、クラスを final にして、プライベート コンストラクターを定義する必要があります。
public final class FilePathHelper {
private FilePathHelper() {
//not called
}
}
これにより、デフォルトのパラメーターなしのコンストラクターがコード内の他の場所で使用されることが防止されます。
さらに、クラスを final にして、サブクラスで拡張できないようにすることもできます。これは、ユーティリティ クラスのベスト プラクティスです。プライベート コンストラクターのみを宣言したため、他のクラスはそれを拡張できませんが、それでもクラスを final としてマークすることはベスト プラクティスです。