EN JP CN

RTC.CALL

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

9      public class Instruction {
10     }
11     public class JmpInstruction extends Instruction {
12         private final Number address;
13         protected JmpInstruction(Number address) {
14             this.address = address;
15         }
16         public Number getAddress() {
17             return address;
18         }
19     }
20     public class ShortJmpInstruction extends JmpInstruction {
21         public ShortJmpInstruction(Byte address) {
22             super(address);
23         }
24     }
25     // ...
26     public void visitInstruction(JmpInstruction i) {
27         if (i instanceof ShortJmpInstruction) {
28             // cast is not necessary here
29             Number address =
30                     ((ShortJmpInstruction) i).getAddress();
31             print(address);
32         }
33         // then visit other instrucrions..
34     }

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' で定義されているためです。