我有一些使用Java8特性编写的代码,这意味着流和lambdas。现在,我必须在一个使用Java7的项目中重用这些代码,有没有可能使用IntelliJ自动重构代码?
例如,我必须将一些如下所示的代码重构为一个简单的for
/ while
循环。
Arrays.stream(values)
.distinct()
.limit(2)
.count();
发布于 2019-02-07 21:38:25
支持,IntelliJ有循环替换Stream API链重构选项。将光标放在Arrays.stream()
方法上,按Alt+Enter
后弹出:
它将生成如下代码:
long count = 0L;
long limit = 2;
Set<Integer> uniqueValues = new HashSet<>();
for (int i : new int[]{1, 2, 3}) {
if (uniqueValues.add(i)) {
if (limit-- == 0) break;
count++;
}
}
System.out.println(count);
要使选项起作用,项目语言级别必须为8或更高。
发布于 2019-02-07 22:17:00
不过,您确实不需要为当前逻辑编写那么多代码(这里的重构似乎不是最优的,至少对我来说可读性较差)。
同样有效的是简单地使用Set
并解决其大小问题:
Set<String> set = new HashSet<>(values);
System.out.println(set.size() > 2 ? 2 : set.size());
https://stackoverflow.com/questions/54574551
复制相似问题