是否可以通过IntelliJ重构Set初始化以使用Set.of()?

问题描述 投票:2回答:1

有没有一种方法可以在IntelliJ中(甚至在Eclipse中)重构,将第一个脚本转换为第二个脚本:

在Java 9之前设置初始化:

Set<String> values = new HashSet<>();
values.add("a");
values.add("b");

从Java 9开始进行集合初始化(创建不可变集合):

Set<String> values = Set.of("a", "b");
java intellij-idea java-9
1个回答
0
投票

重构选项可能并非在所有情况下都可用(源集应该不可修改)。

但是IntelliJ具有inspections可能更适合检测这种情况。

请参见Java> Java语言级别的迁移辅助工具> Java 9]下的内容:不可修改的集合创建可以用集合工厂调用代替

此检查有助于转换创建的不可修改的收藏集Java 9之前的新集合工厂方法,例如List.ofSet.of。另外,由于Java 10可以转换为List.copyOf等被建议。

请注意,Java 9集合工厂方法不接受空值。还需要设置元素和映射键不同。并非总是可以静态检查是否原始元素不同,并且不为null。使用复选框仅当原始元素为编译时常量,因此可以保证转换正确。

此检查仅自Java 9起可用。[2017.2的新功能

此检查可以使用此代码进行测试:

Set<String> stringSet = Collections.unmodifiableSet(new HashSet<>(Arrays.asList("a", "b", "c")));
© www.soinside.com 2019 - 2024. All rights reserved.