是否有一种方法可以在IntelliJ中(甚至在Eclipse中)进行重构,以将第一个脚本转换为第二个脚本:
在Java 9之前设置初始化:
Set<String> values = new HashSet<>();
values.add("a");
values.add("b");
从Java 9开始的集合初始化(创建不可变集合):
Set<String> values = Set.of("a", "b");
答案 0 :(得分:1)
重构选项可能并非在所有情况下都可用(源集应该不可修改)。
但是IntelliJ的inspections可能更适合于检测这种情况。
请参见 Java> Java语言级迁移帮助> Java 9 :不可更改的集合创建可以用集合工厂调用代替:
此检查有助于转换创建的不可修改的收藏集 在Java 9之前使用新的集合工厂方法,例如
List.of
或Set.of
。另外,由于Java 10可以转换为List.copyOf
等 被建议。请注意,Java 9集合工厂方法不会 接受空值。还需要设置元素和映射键 不同。并非总是可以静态检查是否 原始元素不同,并且不为null。使用复选框 仅当原始元素为 编译时常量,因此可以保证转换正确。
此检查仅从Java 9开始可用。
2017.2的新功能
可以使用以下代码测试此检查:
Set<String> stringSet = Collections.unmodifiableSet(new HashSet<>(Arrays.asList("a", "b", "c")));