将Java 8流降级到Intellij IDEA中的Java 7循环

ric*_*din 7 java refactoring intellij-idea java-7 java-8

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

例如,我必须将一些看起来如下的代码重构为一个简单的for/ while循环.

Arrays.stream(values)
      .distinct()
      .limit(2)
      .count();
Run Code Online (Sandbox Code Playgroud)

Kar*_*cki 7

是的,IntelliJ具有"使用循环替换流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);
Run Code Online (Sandbox Code Playgroud)

对于工作选项,项目语言级别必须为8或更高.

  • 是的,这就是为什么你没有看到这个选项,除非你把返回的值分配给一个var,它就不会存在. (4认同)
  • @ riccardo.cardin对于社区也有这个选择. (3认同)