如何在声纳上禁用警告:隐藏实用程序类构造函数?

新手上路,请多包涵

我在声纳上收到此警告:

隐藏实用程序类构造函数:

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

我的课:

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

我想要解决方案来删除 Sonar Qube 上的这个 警告

原文由 Oomph Fortuity 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 877
2 个回答

如果这个类只是一个实用类,你应该将这个类设为 final 并定义一个私有构造函数:

 public final class FilePathHelper {
   private FilePathHelper() {
      //not called
   }
}

这可以防止在代码的其他地方使用默认的无参数构造函数。

此外,您可以将类设为 final,这样它就不能在子类中扩展,这是实用程序类的最佳实践。由于您只声明了一个私有构造函数,因此其他类无论如何都无法扩展它,但将类标记为 final 仍然是最佳实践。

原文由 RoflcoptrException 发布,翻译遵循 CC BY-SA 4.0 许可协议

我不知道 Sonar,但我怀疑它正在寻找一个私有构造函数:

 private FilePathHelper() {
    // No-op; won't be called
}

否则,Java 编译器将提供一个公共的无参数构造函数,这是您真正不想要的。

(您还应该使该类成为最终类,尽管由于它只有一个私有构造函数,其他类无论如何都无法扩展它。)

原文由 Jon Skeet 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题