一尘不染

隐藏实用程序类构造函数:实用程序类不应具有公共或默认构造函数

java

我在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;       
    }
}

我想要适当的解决方案以消除此声纳警告。


阅读 353

收藏
2020-12-03

共1个答案

一尘不染

如果此类仅是实用程序类,则应将该类定型并定义一个私有构造函数:

public final class FilePathHelper {

   private FilePathHelper() {
      //not called
   }
}

这样可以防止默认的无参数构造函数在代码的其他地方使用。另外,您可以将类定型,这样就不能在子类中对其进行扩展,这是实用程序类的最佳实践。由于您仅声明了一个私有构造函数,因此其他类将无法对其进行扩展,但是将类标记为final仍然是一种最佳实践。

2020-12-03