有没有一种方法可以在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具有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")));