resources.report.rules.pmd.ClassWithOnlyPrivateConstructorsShouldBeFinal.html Maven / Gradle / Ivy
ClassWithOnlyPrivateConstructorsShouldBeFinal
ClassWithOnlyPrivateConstructorsShouldBeFinal
A class with only private constructors should be final, unless the private constructor is invoked by a inner class.
TypeDeclaration[count(../TypeDeclaration) = 1]/ClassOrInterfaceDeclaration
[@Final = 'false']
[count(./ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration/ConstructorDeclaration[@Private = 'true']) >= 1 ]
[count(./ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration/ConstructorDeclaration[(@Public = 'true') or (@Protected = 'true') or (@PackagePrivate = 'true')]) = 0 ]
[not(.//ClassOrInterfaceDeclaration)]
Example(s):
public class Foo { //Should be final
private Foo() { }
}