
resources.report.rules.pmd.CloneMethodMustImplementCloneable.html Maven / Gradle / Ivy
CloneMethodMustImplementCloneable
CloneMethodMustImplementCloneable
The method clone() should only be implemented if the class implements the Cloneable interface with the exception of a final method that only throws CloneNotSupportedException.
This rule is defined by the following XPath expression:
//ClassOrInterfaceDeclaration
[not(./ImplementsList/ClassOrInterfaceType
[@Image='Cloneable'])]
/ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration
[MethodDeclaration
[MethodDeclarator[@Image
= 'clone' and count(FormalParameters/*) = 0]]
[not((../MethodDeclaration[@Final = 'true'] or ancestor::ClassOrInterfaceDeclaration[1][@Final = 'true'])
and Block[count(BlockStatement)=1]
/BlockStatement/Statement/ThrowStatement/Expression
/PrimaryExpression/PrimaryPrefix/AllocationExpression
/ClassOrInterfaceType[@Image = 'CloneNotSupportedException'])]]
Example:
public class MyClass {
public Object clone() throws CloneNotSupportedException {
return foo;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy