阅读(4306) (11)

IntelliJ IDEA提取函数变量

2017-11-07 10:25:48 更新

IntelliJ IDEA 可以让你提取一个函数类型变量。

这个重构为 Java 1.8 及更高版本创建了一个函数表达式,并为旧版本的 Java 创建了一个匿名类。

提取功能变量示例

提取功能变量重构前:

import java.util.List;
public class PrintAction implements Runnable {
    private List<String> data;

    public PrintAction(List<String> data) {
        this.data = data;
    }
    public void run() {
        System.out.println("Data: " + data.toString());
    }
}

提取功能变量重构后:

import java.util.List;
import java.util.function.Function;

public class PrintAction implements Runnable {
    private List<String> data;
    public PrintAction(List<String> data) {
        this.data = data;
    }
    public void run() {
        Function<List<String>, String> presenter = (p) -> "Data: " + p.toString();
        System.out.println(presenter.apply(data));
    }
}

提取函数变量

  1. 在本例中选择代码片段,println 方法的一个参数。
    IntelliJ IDEA
  2. 在主菜单中选择:重构| 提取| 函数变量。IntelliJ IDEA 打开 "提取函数变量" 对话框。
    IntelliJ IDEA
  3. 当选择的代码依赖于实例字段时 (如示例中所示),将会出现 "将字段作为参数传递" 复选框,并且您可以在字段的位置中传递一个形参。
    IntelliJ IDEA 
    但是,例如,如果您选择的代码片段取决于任何本地变量或参数
    IntelliJ IDEA 
    相应的条目将出现在列表中。
    IntelliJ IDEA 
    当您取消选择对话框中的某个参数时,将使用相应的本地。
    IntelliJ IDEA 
    配置您的选项,然后单击“确定”。
  4. 从弹出窗口中选择适用的功能界面。
    IntelliJ IDEA
  5. 如果你想,如果你不想使用列表中建议的名字,改变解压变量的名字。
    IntelliJ IDEA

因此,IntelliJ IDEA 会创建一个您可以继续使用的 lambda。

IntelliJ IDEA

另见函数参数重构