繁体   English   中英

有没有办法使用 IntelliJ 重构 Set 初始化以使用 Set.of()?

[英]Is there a way to refactor a Set initialization to use Set.of() using IntelliJ?

有没有办法在 IntelliJ(甚至使用 Eclipse)中重构它,将第一个脚本转换为第二个脚本:

在 Java 9 之前设置初始化:

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

从 Java 9 开始设置初始化(创建一个不可变的集合):

Set<String> values = Set.of("a", "b");

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

然而,IntelliJ 的检查可能更适合检测这种情况。

请参阅Java > Java 语言级别迁移辅助工具 > Java 9不可变集合创建可以替换为集合工厂调用

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

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

此检查仅从 Java 9 开始可用。
2017.2 新增

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

Set<String> stringSet = Collections.unmodifiableSet(new HashSet<>(Arrays.asList("a", "b", "c")));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM