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);
     }

针对第 18 行的代码段报告 JD.UNMOD:尝试通过不可修改的集合 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;
     }

上一代码段中的问题已修复:代码仍在通过“argsCol”的迭代器对其进行修改,然而“argsCol”在此处不可修改;见已修改的“createCollection”方法。此处未显示 JD.UNMOD 报告。

扩展

此检查器可通过 Klocwork 知识库进行扩展。有关详情,请参阅调整 Java 分析。