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