报告 java.util.Collections 不可修改的集合调用,这些调用可以转换为更新的集合工厂方法。 例如,这些可以替换为在 Java 9 中引入的 List.of()Set.of() 或在 Java 10 中引入 List.copyOf()

请注意,与 java.util.Collections 方法相比,Java 9 集合工厂方法:

当这些情况被违反时,会抛出异常。 这可以在迁移后更改代码的语义。

示例:


  List<Integer> even = Collections.unmodifiableList(
    Arrays.asList(2, 4, 6, 8, 10, 2));
  List<Integer> evenCopy = Collections.unmodifiableList(
    new ArrayList<>(list1));

在应用快速修复后:


  List<Integer> even = List.of(2, 4, 6, 8, 10, 2);
  List<Integer> evenCopy = List.copyOf(list);

仅当项目或模块的语言级别为 9 或更高时才报告此检查。

使用内容不确定时不要警告选项仅在提供的参数是编译时常量的情况下报告。 这减少了行为改变的机会,因为并不总是可以静态检查原始元素是否唯一而为非 null

使用 Suggest 'Map.ofEntries' 选项建议使用 Map.ofEntries() 替换超过 10 个条目的不可修改的映射。

2017.2 的新功能