JD.CAST.UPCAST

JD.CAST.UPCAST は、オブジェクトが型 A に対する演算子のインスタンスでチェックされた後、型 B は型 A の派生型であるにもかかわらず、型 B に変換される場合に起動されます。

脆弱性とリスク

型変換は安全でないため、通常、これはエラーです。実際にはオブジェクトは A の別の派生型である可能性があります。場合によっては、instanceof から cast へのパスに矛盾があると、このエラーは誤検知を生じる可能性があります。

例 1

コピー
     void setValue(Object a, Object value) {
         if (a instanceof Map) {
             HashMap b = (HashMap) a;
             b.put(value, "");
         } else if (a instanceof List) {
             List b = (List) a;
             b.add(value);
         }
     }

JD.CAST.UPCAST: 'HashMap' への 'a' の型変換は疑わしい型変換です。'HashMap' は 'Map' の派生型です。このオブジェクトは、'Map' の別の派生型を保持している可能性があり、ClassCastException の原因となる可能性があります。-> 15: a instanceof Map-> 16: (HashMap)a

関連チェッカー