有没有办法在IntelliJ (甚至是Eclipse)中重构它,将第一个脚本转换成第二个脚本:
在Java 9之前设置初始化:
Set<String> values = new HashSet<>();
values.add("a");
values.add("b");从Java 9开始的集合初始化(创建一个不可变的集合):
Set<String> values = Set.of("a", "b");发布于 2019-12-04 04:43:25
重构选项并不是在所有情况下都可用(源集应该是不可修改的)。
但是,IntelliJ的inspections可能更适合检测这种情况。
参见Java > Java migration aids > 9:不可变集合的创建可以替换为集合工厂调用:
此检查有助于将在Java9之前创建的不可修改的集合转换为新的集合工厂方法,如
List.of或Set.of。此外,从Java10开始,可以建议转换为List.copyOf等。
请注意,Java 9集合工厂方法不接受空值。此外,集合元素和映射键也需要不同。并不总是可以静态地检查原始元素是否不同并且不为空。使用该复选框可以强制执行检查,以便仅在原始元素是编译时常量时发出警告,从而保证转换是正确的。
此检查仅适用于Java 9之后的版本。
2017.2中的新特性
此检查可以使用以下代码进行测试:
Set<String> stringSet = Collections.unmodifiableSet(new HashSet<>(Arrays.asList("a", "b", "c")));https://stackoverflow.com/questions/59160647
复制相似问题