RTC.CALL
警告 Redundant Type Cast (RTC) は、より一般的なクラスで定義されたメソッドを呼び出しながら、クラスにキャストが追加された場合に表示されます。下の例を参照してください。
コピー
public class Apple {
public String someAppleToString(Object o) {
return ((Apple) o).toString();
}
}
この例では、Apple への型変換は冗長です。 Apple クラスは toString() メソッドを再定義しておらず、Object のメソッドが実際に使用されているためです。警告 RTC.CALL は、より一般的なクラスで定義されたメソッドを呼び出しながら、クラスにキャストが追加された場合に表示されます。
例 1
コピー
public class Instruction {
}
public class JmpInstruction extends Instruction {
private final Number address;
protected JmpInstruction(Number address) {
this.address = address;
}
public Number getAddress() {
return address;
}
}
public class ShortJmpInstruction extends JmpInstruction {
public ShortJmpInstruction(Byte address) {
super(address);
}
}
// ...
public void visitInstruction(JmpInstruction i) {
if (i instanceof ShortJmpInstruction) {
// cast is not necessary here
Number address =
((ShortJmpInstruction) i).getAddress();
print(address);
}
// then visit other instrucrions..
}
RTC.CALL が 30 行目に対して報告されています。'com.klocwork.jdefects.checkers.ast.samples.RTC_CALL_Sample_1$JmpInstruction' から 'com.klocwork.jdefects.checkers.ast.samples.RTC_CALL_Sample_1$ShortJmpInstruction' への型変換は冗長です。 'getAddress' メソッドは 'com.klocwork.jdefects.checkers.ast.samples.RTC_CALL_Sample_1$JmpInstruction' で定義されているためです。