JD.UNMOD
このエラーは、変更できないコレクションを変更しようとする試みが検出された場合に報告されます。このような試みは、ランタイム例外を生じます。
例 1
コピー
public static void main(String[] args) {
argsCol = createCollection(args);
for (final Iterator<String> iterator = argsCol.iterator(); iterator.hasNext();) {
final String arg = iterator.next();
if ("version".equals(arg)) {
printVersion();
iterator.remove();
}
}
run();
}
public static Collection<String> createCollection(final String[] array) {
return Arrays.asList(array);
}
JD.UNMOD が 18 行目のスニペットに対して報告されています。 変更できないコレクション 'argsCol' をイテレータによって変更しようとしています。
例 2
コピー
public static void main(String[] args) {
argsCol = createCollection(args);
for (final Iterator<String> iterator = argsCol.iterator(); iterator.hasNext();) {
final String arg = iterator.next();
if ("version".equals(arg)) {
printVersion();
iterator.remove();
}
}
run();
}
public static Collection<String> createCollection(final String[] array) {
final List<String> list = new ArrayList<String>();
for (final String str : array) {
list.add(str);
}
return list;
}
例 1 のスニペットの問題を修正しました:コードは引き続きイテレータによって 'argsCol' を変更していますが、フィールドは、'argsCol' は変更不可ではありません;変更された 'createCollection' を参照してください。フィールドは、JD.UNMOD は報告されていません。
拡張機能
このチェッカーは、Klocwork knowledge base (ナレッジベース) を利用して拡張できます。詳細については、Java 解析のチューニングを参照してください。