IntelliJ IDEA提取函數(shù)參數(shù)

2018-11-07 10:59 更新

當(dāng)您執(zhí)行提取函數(shù)參數(shù)重構(gòu)時(shí),IntelliJ IDEA 將:

  1. 分析選定的代碼片段,以找出方法簽名是什么,如果您將這個(gè)片段提取到一個(gè)新的單獨(dú)的方法中。
  2. 使用此方法簽名查找所有功能接口,并建議您選擇其中一個(gè)。(只建議使用 @functionalinterface 或?qū)儆谥麕?kù)的接口,如:Guava、Apache collection 等。)
  3. 將代碼片段與基于所選接口的匿名類(lèi)封裝起來(lái),并使用此匿名類(lèi)作為參數(shù)。
  4. 在適當(dāng)情況下,進(jìn)行相關(guān)代碼調(diào)整。

提取函數(shù)參數(shù)示例

提取函數(shù)參數(shù)前:

@FunctionalInterface
public interface Person {
    public void sayHello (String s);
}

public class Hello {
    private void printHello () {
        String s="Hello";
        System.out.println(s);
    }
    private void printText () {
        printHello();
    }
}

提取函數(shù)參數(shù)后:

@FunctionalInterface
public interface Person {
    public void sayHello (String s);
}

public class Hello {
    private void printHello(Person person) {
        String s = "Hello";
        person.sayHello(s);
    }
    private void printText () {
        printHello(new Person() {
            public void sayHello(String s) {
                System.out.println(s);
            }
        });
    }
}

在上述例子中,重構(gòu)是在 System.out.println(s); 內(nèi)部執(zhí)行的 Hello.printHello()。

IntelliJ IDEA 使用適當(dāng)?shù)姆椒ê灻?String) -> void)找到所有的功能接口,并建議您選擇其中的一個(gè)接口。(在這個(gè)例子中,接口 Person 被選中。)

結(jié)果是:

  • 選定的片段(System.out.println(s);)使用基于接口的匿名類(lèi)包裝 Person。這個(gè)匿名類(lèi)作為參數(shù)傳遞給 printHello() 內(nèi)部的調(diào)用 printText()。
  • 將 Person 添加為 printHello() 的參數(shù),并將最初選定的代碼片段替換為接口方法的調(diào)用(sayHello())。

執(zhí)行提取函數(shù)參數(shù)重構(gòu)

  1. 選擇感興趣的代碼片段并執(zhí)行以下操作之一:按 Ctrl+Shift+Alt+P。從主菜單或上下文菜單中選擇:重構(gòu)| 提取| 功能參數(shù)(Refactor | Extract | Functional Parameter)。從主菜單選擇:重構(gòu)| 重構(gòu)這個(gè)(Refactor | Refactor This)(Ctrl+Shift+Alt+T)并且選擇功能參數(shù)(Functional Parameter)。
  2. 從列表中選擇所需的功能接口。
  3. 在提取參數(shù)對(duì)話框中指定重構(gòu)選項(xiàng)。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)