Utility classes should not have a public constructor

  • squid : S1118

Utility classes, which are a collection of static members, are not meant to be instantiated. They should therefore not have public constructors.

Java adds an implicit public constructor to every class which does not define at least one explicitly. Hence, at least one non-public constructor should be defined.

The following code:

class StringUtils { // Non-Compliant

  public static String concatenate(String s1, String s2) {
    return s1 + s2;
  }

}

should be refactored into:

class StringUtils { // Compliant

  private StringUtils {
  }

  public static String concatenate(String s1, String s2) {
    return s1 + s2;
  }

}
Close