ClassWithOnlyPrivateConstructorsShouldBeFinal

A class with only private constructors should be final, unless the private constructor is called by a inner class.

This rule is defined by the following XPath expression:

TypeDeclaration[count(../TypeDeclaration) = 1]/ClassOrInterfaceDeclaration
[@Final = 'false']
[count(./ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration/ConstructorDeclaration[@Private = 'true']) >= 1 ]
[count(./ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration/ConstructorDeclaration[@Public = 'true'])  = 0 ]
[not(.//ClassOrInterfaceDeclaration)]
             

Example:

                
public class Foo {  //Should be final
    private Foo() { }
}