提取常量重构是提取字段重构的一个特例,目的是提供一种快速、方便的方法来创建最终的静态字段。
提取常量重构之前:
public class Class {
public void method() {
String string = "string";
ArrayList list = new ArrayList();
list.add(string);
anotherMethod(string);
...
}
}
提取常量重构之后:
public class Class {
@NonNls
private static final String STRING ="string";
public void method() {
ArrayList list = new ArrayList();
list.add(STRING);
anotherMethod(STRING);
...
}
}
提取Java常量
该 IntelliJ IDEA 默认启用就地重构。所以,如果你没有改变这个设置,则 Java 的提取常量重构将在编辑器中就地执行。
⒈ 将光标置于变量的表达式或声明中,将其替换为常量。
⒉ 执行以下任一操作:
① 按 Ctrl+Alt+C。
② 在主菜单或上下文菜单上选择:重构| 提取| 常量(Refactor | Extract | Constant)。
⒊ 如果检测到当前光标位置有多个表达式,则会显示 "表达式" 列表。如果是这种情况,请选择所需的表达式。为此,请单击表达式。或者,使用向上和向下箭头键导航到感兴趣的表达式,然后按 Enter 来选择它。
⒋ 如果在类中发现了多个表达式,请指定是只替换选定的事件,还是只用新的常量替代所找到的所有实例。
⒌ 如果您想要在其他类中定义常量,请选中 "移动到其他类" 复选框。
⒍如有必要,请更改新常量的类型。
要移至该类型,请按 Shift+Tab。然后,从列表中选择所需的类型,或在带有红色边框的框中编辑类型。
现在,要返回到常数名称,请按 Tab。
⒎ 指定常量的名称。从列表中选择名称,或在带有红色边框的框中键入名称。
⒏ 要完成重构,请按 Tab 或 Enter。
如果您还没有完成重构并想要取消所做的更改,请按 Escape。
⒐ 如果已选择将常量定义移动到其他类,请在 "移动成员" 对话框中指定关联的设置。
如果在编辑器设置中清除了 "启用就地重构" 复选框,则通过 "提取常量" 对话框来执行 "提取常量"。
您也可以从意向行为下拉菜单中调用重构:
⒈ 如果您正在使用 Java 代码,请确保在编辑器设置中启用适当的重构选项已关闭。(默认情况下,执行 Java 的提取常量重构是就地执行的)。
⒉ 在编辑器中,选择要用常量替换的表达式或变量,或者将光标放在这样的表达式或变量声明中。
⒊ 在主菜单或上下文菜单中,选择:重构| 提取常量(Refactor | Extract Constant),或按 Ctrl+Alt+C。
⒋ 在表达式弹出菜单中,选择要替换的表达式。请注意,IntelliJ IDEA 在编辑器中突出显示所选表达式。
⒌ 在“提取常数”对话框中打开:
① 指定新常数的名称。
② 选择常量将被引入的类。如果您选择这里的enum类,请使用引入 enum 常量选项来指定常量是enum常数还是常用字段。
③ 在可见性区域,选择新常量的可见性范围。
④ 如果新常量将替换现有变量,则可以选择删除相应的变量声明。要做到这一点,使用“Delete 变量声明”复选框。
⑤ 要替换所选表达式的所有出现(如果在类中多次找到所选表达式),请选择“替换所有出现的”复选框。
⑥ 在配置使用注释的项目中,您可以将 String 类型的常量注释为@NonNls以防止在可能的本地化过程中更改它。为此,请选择注释字段为 @nonnls 的选项。
⑦ 点击“确定”。