codecamp

IntelliJ IDEA提取函数变量

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

另见函数参数重构

IntelliJ IDEA提取部分
IntelliJ IDEA提取属性
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

IntelliJ IDEA的一般准则

什么是IntelliJ IDEA项目

使用IntelliJ IDEA的意图行为

IntelliJ IDEA使用运行/调试配置

特定于VCS的程序

IntelliJ IDEA语言和特定框架指南

IntelliJ IDEA的数据库和SQL功能

IntelliJ IDEA使用之JavaServer Faces(JSF)

IntelliJ IDEA:分析PHP应用程序的性能

IntelliJ IDEA:调试PHP应用程序

IntelliJ IDEA:适用于PHP的Google App Engine

IntelliJ IDEA更多内容

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }