FinalClass
Since Checkstyle 3.1
Description
Ensures that identifies classes that can be effectively declared as final are explicitly
marked as final. The following are different types of classes that can be identified:
- Private classes with no declared constructors.
- Classes with any modifier, and contains only private constructors.
Classes are skipped if:
- Class is Super class of some Anonymous inner class.
- Class is extended by another class in the same file.
Examples
To configure the check:
<module name="Checker">
<module name="TreeWalker">
<module name="FinalClass"/>
</module>
</module>
Example:
public class Example1 { // ok, since it has a public constructor
final class A {
private A() {
}
}
class B { // violation, 'Class B should be declared as final.'
private B() {
}
}
class C { // ok, since it has a public constructor
int field1;
String field2;
private C(int value) {
this.field1 = value;
this.field2 = " ";
}
public C(String value) {
this.field2 = value;
this.field1 = 0;
}
}
class AnonymousInner { // ok, class has an anonymous inner class.
public final AnonymousInner ONE
= new AnonymousInner() {
};
private AnonymousInner() {
}
}
class Class1 {
private class Class2 { // violation, 'Class Class2 should be declared as final'
}
public class Class3 {
}
}
}
Example of Usage
Violation Messages
All messages can be customized if the default message doesn't suit you. Please see the documentation to learn how to.
Package
com.puppycrawl.tools.checkstyle.checks.design