クローンに関するルールセットです。
※PMD 3.9に対応しています。
ProperCloneImplementation
super.clone()を呼び出しているかチェックします。
class Foo
{
public Object clone()
{
// super.clone()を呼び出していないのでNG!
return new Foo();
}
}
CloneThrowsCloneNotSupportedException
clone()メソッドでCloneNotSupportedExceptionをスローしているかチェックします。
public class MyClass implements Cloneable
{
// CloneNotSupportedExceptionが発生するはずなのにスローしていないのでNG!
public Object clone()
{
MyClass clone = (MyClass)super.clone();
return clone;
}
}
CloneMethodMustImplementCloneable
Cloneableインターフェイスを実装しているかチェックします。
// Cloneableインターフェイスを実装していないのでNG!
public class MyClass
{
public Object clone() throws CloneNotSupportedException
{
return foo;
}
}
コメント