首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法通过IntelliJ重构Set初始化以使用Set.of()?

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

Stack Overflow用户
提问于 2019-12-03 23:43:40
回答 1查看 119关注 0票数 3

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

在Java 9之前设置初始化:

代码语言:javascript
复制
Set<String> values = new HashSet<>();
values.add("a");
values.add("b");

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

代码语言:javascript
复制
Set<String> values = Set.of("a", "b");
EN

回答 1

Stack Overflow用户

发布于 2019-12-04 04:43:25

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

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

参见Java > Java migration aids > 9不可变集合的创建可以替换为集合工厂调用

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

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

此检查仅适用于Java 9之后的版本。

2017.2中的新特性

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

代码语言:javascript
复制
Set<String> stringSet = Collections.unmodifiableSet(new HashSet<>(Arrays.asList("a", "b", "c")));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59160647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档