JD.CAST.KEY

当检索集合元素所用的密钥类型与将对象放到集合中所用的密钥类型不同时,报告 JD.CAST.KEY。

漏洞与风险

将在集合中找不到所需元素,因为没有使用该类型的键将元素放到集合中。

缓解与预防

检查集合是否会如预期包含不同类型的键。检查检索集合元素所用的键类型是否正确无误。

示例 1

复制
 public class JD_CAST_KEY_Sample_1 {
 
     HashMap len=new HashMap();
 
     void fill(File dir){
       File[] list = dir.listFiles();
       for (int i = 0; i < list.length; i++) {
         File file = list[i];
         len.put(file, new Long(file.length()));
       }
     }
 
     int getLength(String file){
       Long l = (Long) len.get(file);
       if (l!=null) return l.intValue();
       return 0;
     }
 }

针对第 24 行的 len.get(file) 调用报告 JD.CAST.KEY:怀疑使用 java.lang.String 类型的键检索集合元素。将对象放到集合中所用的键类型是“java.io.File”。