IntelliJ IDEA提取接口重構(gòu)

2018-11-03 10:51 更新

使用提取接口重構(gòu),您有下列三個(gè)選擇:

  • 根據(jù)類的方法創(chuàng)建一個(gè)接口而不需要立即應(yīng)用新的接口。
  • 創(chuàng)建一個(gè)接口并將其應(yīng)用于源代碼。
  • 重命名原始類,并實(shí)現(xiàn)新創(chuàng)建的接口。在這種情況下,IntelliJ IDEA 會(huì)更改原始類的所有用法,以盡可能使用該接口。

另外,在初始類中聲明的靜態(tài) final 字段可以被移動(dòng)到一個(gè)接口。因此,將會(huì)創(chuàng)建一個(gè)包含特定方法和字段的接口。從而,指定的類方法成為相應(yīng)接口方法的實(shí)現(xiàn)。

示例

在這里,我們有一個(gè)類,并執(zhí)行提取接口重構(gòu),根據(jù)類的方法創(chuàng)建一個(gè)接口。

重構(gòu)前 重構(gòu)后
// AClass.java 文件
class AClass {
    public static final double CONSTANT=3.14;
    public void publicMethod() {//some code here}
    public void secretMethod() {//some code here}
}
// AClass.java 文件
class AClass implements AnInterface {
    public void publicMethod() {//some code here}
    public void secretMethod() {//some code here}
}
// AnInterface.java 文件
public interface AnInterface {
    double CONSTANT=3.14;
    void publicMethod();
}

提取接口重構(gòu)的另一個(gè)例子,當(dāng)重命名的原始類和使用接口的可能選項(xiàng)被選中。

重構(gòu)前 重構(gòu)后
public class FormerAClass implements AClass {
    public void publicMethod() {//some code here}
    public void secretMethod() {//some code here}
}
public interface AClass {
    double CONSTANT=3.14;
    void publicMethod();
}

您可以從已實(shí)現(xiàn)另一個(gè)接口的類中提取接口。讓我們從實(shí)現(xiàn) AnInterface 的類中提取接口。根據(jù)我們是否需要 AnotherInterface (提取的接口) 來擴(kuò)展 AnInterface (現(xiàn)有的界面), 或者我們希望源 AClass 實(shí)現(xiàn)它們, 我們將得到以下代碼:
提取的接口擴(kuò)展了現(xiàn)有的一個(gè):


您可以從已經(jīng)實(shí)現(xiàn)了另一個(gè)接口的類中提取接口。讓我們從實(shí)現(xiàn) AnInterface 的類中提取接口。根據(jù)我們是否需要 AnotherInterface (提取的接口)來擴(kuò)展 AnInterface (現(xiàn)有的接口)還是我們希望源代碼 AClass 來實(shí)現(xiàn)它們,我們將得到以下代碼:

提取的接口擴(kuò)展了現(xiàn)有的接口:

class AClass implements AnotherInterface {
    public void publicMethod() {
        //some code here
    }
    public void secretMethod() {
        //some code here
    }
}

提取的接口:

public interface AnotherInterface extends AnInterface {
    }

Source 類實(shí)現(xiàn)兩個(gè)接口。

Source 類:

class AClass implements AnInterface, AnotherInterface {
    public void publicMethod() {
        //some code here
    }
    public void secretMethod() {
        //some code here
    }
}

提取的接口:

public interface AnotherInterface {
}

提取接口

  1. 在 "項(xiàng)目" 視圖、"結(jié)構(gòu)" 視圖中選擇類,或在編輯器中的類中的任意位置放置插入符號(hào)。
  2. 在主菜單或選擇的上下文菜單上,選擇:重構(gòu)| 提取| 接口。此時(shí)將顯示 "提取接口" 對(duì)話框。
  3. 要提取新的接口,請(qǐng)選擇 "提取接口" 選項(xiàng)并指定新接口的名稱。 
    要重命名原始類并使其成為新創(chuàng)建的接口的實(shí)現(xiàn),請(qǐng)選擇 "重命名原始類" 并使用 "可能的接口" 選項(xiàng),并指定原始類的新名稱。IntelliJ IDEA 會(huì)將所有原始類的用法改為只在仍然需要的地方執(zhí)行的用法。
  4. 指定新的接口所在的包。
  5. 在 "成員" 中選擇要在接口中列出的類成員以形成接口區(qū)域。該列表顯示了該類的所有方法,以及最終的靜態(tài)字段(常量)。
  6. 在 JavaDoc 區(qū)域,選擇要應(yīng)用于 JavaDoc 的操作。
    • 若要將其保留在其所在的位置,請(qǐng)選擇 "As" 選項(xiàng)。
    • 要將其復(fù)制到提取的接口,請(qǐng)選擇 "復(fù)制" 選項(xiàng)。
    • 要將其移動(dòng)到提取的接口,請(qǐng)選擇 "移動(dòng)" 選項(xiàng)。
  7. 單擊 "重構(gòu)" 以繼續(xù)。
  8. 在準(zhǔn)備就緒時(shí)單擊 "重構(gòu)"。如果 IntelliJ IDEA 在 "查找工具" 窗口中顯示重構(gòu)預(yù)覽,請(qǐng)查看建議的更改。要提取接口并應(yīng)用建議的更改,請(qǐng)單擊 "執(zhí)行重構(gòu)"。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)