首页 > 解决方案 > 在 Intellij IDEA 中将 Java 8 流降级为 Java 7 循环

问题描述

我有一些使用 Java 8 特性编写的代码,这意味着流和 lambdas。现在,我必须在使用 Java 7 的项目中重用此类代码。是否有可能使用 IntelliJ 自动重构代码?

例如,我必须将一些如下所示的代码重构为一个简单的for/while循环。

Arrays.stream(values)
      .distinct()
      .limit(2)
      .count();

标签: javaintellij-ideajava-8refactoringjava-7

解决方案


是的,IntelliJ 有“用循环替换 Stream API 链”重构选项。Alt+Enter将光标放在方法上后按下后弹出Arrays.stream()

在此处输入图像描述

它将产生如下代码:

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 或更高。


推荐阅读