java.util.Collections
不可修改的集合调用,这些调用可以转换为更新的集合工厂方法。
例如,这些可以替换为在 Java 9 中引入的 List.of()
或 Set.of()
或在 Java 10 中引入的 List.copyOf()
。
请注意,与 java.util.Collections
方法相比,Java 9 集合工厂方法:
null
值。
null
实参来查询返回集合的 List.contains()
或 Map.get()
等方法。
当这些情况被违反时,会抛出异常。 这可以在迁移后更改代码的语义。
示例:
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
。
使用建议 'Map.ofEntries' 选项可建议使用 Map.ofEntries()
替换超过 10 个条目的不可修改的映射。
2017.2 最新变化