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;
}
}
JD.CAST.KEY は 24 行目で 'len.get(file)' の呼び出しに対して報告されています。コレクション要素の取得に使用される 'java.lang.String' タイプは疑わしいキータイプです。オブジェクトは、「java.io.File」タイプのキーでコレクションに配置されています。