JD.CAST.UPCAST
当使用类型 A 的运算符实例检查对象,然后将对象转换为类型 B(其中类型 B 是类型 A 的子类型)时,触发 JD.CAST.UPCAST。
漏洞与风险
这通常是一种错误,因为转换不安全;对象实际上可以是 A 的其他子类型。在某些情况下,当从 instanceof 到转换的路径不兼容时,这种错误会产生误报。
示例 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:怀疑“a”转换为了“HashMap”,其中“HashMap”是“Map”的子类型。该对象可以保留 Map 的其他子类型,这会导致 ClassCastException。-> 15:a instanceof Map-> 16:(HashMap)a