IntelliJ IDEA 提取字段重構聲明一個新的字段并用選定的表達式初始化它。原始表達式被替換為字段的用法。
示例-1
提取字段重構前:
public class Class {
AnotherClass anotherClass;
public void method() {
int a = 1;
...
int b = a + anotherClass.intValue();
int c = b + anotherClass.intValue();
}
}
提取字段重構后:
public class Class {
public AnotherClass anotherClass;
private int number;
public Class() {
number = anotherClass.intValue();
}
public void method() {
int a = 1;
...
int b = a + number;
int c = b + number;
}
}
示例-2
提取字段重構前:
public class Class {
AnotherClass anotherClass;
public void method() {
int a = anotherClass.innerClass.i;
int b = anotherClass.innerClass.j;
}
}
提取重構字段后:
public class Class {
public AnotherClass anotherClass;
private AnotherClass.InnerClass aClass = anotherClass.innerClass;
public void method() {
int a = aClass.i;
int b = aClass.j;
}
}
在原地提取字段
默認情況下,在 IntelliJ IDEA 中啟用了就地重構。所以,如果你沒有改變這個設置,那么將在編輯器中對引入的字段重構進行就地重構:
⒈ 將光標置于變量的表達式或聲明中,并用字段替換。
⒉ 執行以下任一操作:
① 按 Ctrl+Alt+F。
② 在主菜單或上下文菜單上選擇:重構|引入字段(Refactor | Introduce Field)。
⒊ 如果檢測到當前光標位置有多個表達式,表達式列表就會出現。如果是這種情況,請選擇所需的表達式。為此,請單擊表達式?;蛘撸褂孟蛏虾拖蛳录^鍵導航到感興趣的表達式,然后按 Enter 來選擇它。
⒋ 如果在類中發現了多個表達式,請指定您是否希望只替換所選的事件,或者將所有發現的事件替換為新的常量:
⒌ 如有必要,請更改新字段的類型。
要移至該類型,請按 Shift+Tab。然后,從列表中選擇所需的類型,或者在帶有讀取邊框的框中編輯類型。
現在,要移回字段名稱,請按 Tab。
⒍ 如果相關,則指定新字段將在何處初始化 - 在當前方法中還是在類構造器中。
⒎ 指定字段的名稱。從列表中選擇名稱,或者在帶有紅色邊框的框中鍵入名稱。
⒏ 要完成重構,請按 Tab 或 Enter。
如果您還沒有完成重構并想要取消所做的更改,請按 Escape。
請注意,有時您可能需要多次按下相應的按鍵。
如果在編輯器設置中清除了 "啟用就地重構" 復選框,則將通過 "引入" 字段來執行 "提取字段"。
⒈ 在編輯器中,選擇要用字段替換的表達式或變量,或者將光標放在這樣的表達式或變量聲明中。
⒉ 在主菜單或選擇的上下文菜單中,選擇:重構| 提取| 字段(Refactor | Extract | Field),或按 Ctrl+Alt+F。
⒊ 在表達式彈出菜單中,選擇要替換的表達式。請注意,IntelliJ IDEA 在編輯器中突出顯示所選表達式。
⒋ 在打開的提取字段對話框中:
① 從類型列表字段中選擇新字段的類型。
② 指定字段的名稱。
③ 在初始化過程中選擇必要的選項以指定初始化新字段的位置。
④ 在可見性區域,為新字段選擇可見性范圍。
⑤ 如果您想要聲明新字段final,請選擇“聲明 final(Declare final)”復選框。
⑥ 如果新字段要替換現有變量,則可以選擇刪除相應的變量聲明。要做到這一點,使用“Delete 變量聲明”復選框。
⑦ 要替換所選表達式的所有出現(如果在類中多次找到所選表達式),請選擇替換所有出現的復選框。
⑧ 點擊“確定”。