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