clone() メソッドのうち、その戻り値の型が所属しているクラスとは異なっているものを報告します。
多くの場合、clone() メソッドの戻り型は java.lang.Object であるため、クライアントが使用するのは困難です。
Effective Java (第 2 版および第 3 版) では、clone() メソッドの戻り値の型をそれが返すオブジェクトのクラス型と同じにすることを推奨しています。
例:
class Foo implements Cloneable {
public Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
throw new AssertionError();
}
}
}
クイックフィックス適用後:
class Foo implements Cloneable {
public Foo clone() {
try {
return (Foo)super.clone();
} catch (CloneNotSupportedException e) {
throw new AssertionError();
}
}
}